如何修改SQL语句实现上上个月及更早月份的整月数据查询
SQL指定月份查询调整方案
原代码逻辑说明
现有代码通过计算当前日期相对1900-01-01的月份差,动态匹配上一个自然月的起止范围,不需要手动指定日期,可自动适配不同月份的天数差异。
调整方案
如果需要查询指定历史月份的整月数据,只需对原代码做两处修改即可:
- 将代码中的
GETDATE()替换为你要查询月份的任意一个日期(比如查2021年3月就填'2021-03-01') - 移除原代码中月份差后的
-1参数,同时建议将结束时间的判断逻辑优化为小于下一月1日,避免因时间戳带时分秒导致数据遗漏
2021年3月整月查询代码
_timestamp >= DATEADD(MONTH, DATEDIFF(MONTH, 0, '2021-03-01'), 0) AND _timestamp < DATEADD(MONTH, DATEDIFF(MONTH, 0, '2021-03-01') + 1, 0)
2021年2月整月查询代码
_timestamp >= DATEADD(MONTH, DATEDIFF(MONTH, 0, '2021-02-01'), 0) AND _timestamp < DATEADD(MONTH, DATEDIFF(MONTH, 0, '2021-02-01') + 1, 0)
注意事项
- 你提到的
30/03/2021、30/02/2021的日期表述不准确:3月共有31天,2021年为平年2月只有28天,上述动态计算方案会自动适配不同月份的天数,无需手动指定月末日期,避免出现日期非法或漏数据的问题 - 优化后的结束时间判断逻辑兼容带时分秒的时间戳字段,覆盖整月所有时间点,比原
<=判断的兼容性更强
内容的提问来源于stack exchange,提问作者Abhilash Payghan
相关产品推荐
相关产品推荐

