SQL如何从当前日期倒推6个月区间内提取首个月数据并修改现有脚本
SQL脚本修改方案
你需要的逻辑是从当前倒推6个月的区间中,排除最近5个月,仅取区间首月数据,对应datetimeInsert与当前日期的月份差刚好为6,直接修改原有WHERE条件即可:
基础修改版(沿用原有datediff逻辑)
select datetimeInsert, Part_no,qty FROM RECEIPT where datediff(month, datetimeInsert, getdate()) = 6
逻辑说明:datediff(month, datetimeInsert, getdate())计算两个日期的月份差值,等于6时刚好对应6个月区间的第一个月,差值0-5的近5个月数据会被直接排除。
性能优化版(适配索引场景)
如果datetimeInsert字段建有索引,推荐用下面的写法,避免对字段做函数运算,可以命中索引提升查询效率,同时避免日期边界计算误差:
select datetimeInsert, Part_no,qty FROM RECEIPT where -- 倒推第6个月的第一天 datetimeInsert >= DATEADD(month, DATEDIFF(month, 0, getdate()) -6, 0) -- 倒推第5个月的第一天,不包含 AND datetimeInsert < DATEADD(month, DATEDIFF(month, 0, getdate()) -5, 0)
内容的提问来源于stack exchange,提问作者Sam Bin Ham
相关产品推荐
相关产品推荐

