省流:

sql中尽量避免函数操作

-- 创建时间大于等于本月第一天的数据
create_time >= date_add(curdate(), interval - day(curdate()) + 1 day);

详解:

报表或者一些查询,会用到本月数据,或者上月数据。

一般会这么写:

-- 创建时间小于等于本月的数据
date_format(create_time,'%Y%m') <= date_format(curdate(),'%Y%m')

这样会对每行数据的create_time进行date_format操作,一般不推荐在sql中进行函数计算。

我们可以用本月第一天代替:

-- 创建时间大于等于本月第一天的数据
create_time >= date_add(curdate(), interval - day(curdate()) + 1 day);
-- 上个月第一天
date_add(curdate()-day(curdate())+1,interval -1 month);
-- 下月第一天
date_add(curdate()-day(curdate())+1,interval 1 month);

日期格式的时间,默认都是0点0分0秒。例如,2023年2月的第一天,2023-02-01 00:00:00

Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐