SQL查询公式修正需求:获取上月完整数据
修正方案:返回上月完整数据的SQL逻辑
原SQL逻辑会根据当前日期的日数切换上月初或当月初,现在需要调整为无论何时运行,都返回上月1日至上月最后一天的完整数据,以下是针对SQL Server语法的修正方案:
上月起始日期(上月1日)
DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - 1, 0)
上月结束日期(上月最后一天)
DATEADD(DAY, -1, DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP), 0))
完整查询示例(用于筛选数据)
如果需要在查询中过滤出上月的数据,推荐用以下写法(避免时分秒判断问题):
SELECT * FROM your_table WHERE your_date_column >= DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP) - 1, 0) AND your_date_column < DATEADD(MONTH, DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP), 0)
逻辑说明
DATEDIFF(MONTH, 0, CURRENT_TIMESTAMP):计算从1900年1月1日到当前日期的总月份数- 对该数值减1后通过
DATEADD,即可得到上月的第一天 - 直接用
<当月第一天替代<=上月最后一天,能兼容带时分秒的日期数据,避免漏判或误判
内容的提问来源于stack exchange,提问作者Ravikanth Kadiyala
相关产品推荐
相关产品推荐

