You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WHERE子句中双日期条件写法的可行性与长期效果咨询

SQL日期筛选逻辑解答

你的查询语句中,两个REPORT_DATE >=条件用AND连接,实际生效的是两个日期里更晚的那个——因为只有同时满足大于等于两个日期的数据才会被选中,相当于取两者的最大值作为筛选起点。

当前(比如2023年6月)的情况

DATEADD(month, -12, CONVERT(DATE, GETDATE()))会得到2022年6月的某一天,而你指定的固定日期是2022-11-01,后者更晚,所以筛选起点是2022-11-01,返回2022年11月至今的数据,符合你的需求。

2023年12月时的情况

当时间来到2023年12月,DATEADD(month, -12, CONVERT(DATE, GETDATE()))会计算出2022年12月的当前日期,这个日期比固定的2022-11-01晚,此时筛选起点自动切换为这个动态计算的日期,返回的就是过去12个月的数据(从2022年12月到2023年12月),完全满足你“无需修改语句”的要求。

小优化建议

你可以把两个条件合并成一个更清晰的写法,逻辑完全一致:

SELECT *
FROM Table
WHERE
REPORT_DATE >= GREATEST('2022-11-01', DATEADD(month, -12, CONVERT(DATE, GETDATE())))

内容的提问来源于stack exchange,提问作者JPSeagull

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:03:20