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

SQL查询筛选距选定日期不足7天的EndDate记录问题咨询

问题原因

你现有代码的核心错误是BETWEEN语法的参数顺序错误:BETWEEN 下限 AND 上限要求下限值必须小于等于上限值,你代码中DATEADD(day, - 7, EndDate)得到的是比EndDate早7天的日期,数值更小,你把更大的EndDate放在了BETWEEN的前位,更小的减7后日期放在后位,生成的是无效区间,自然无法返回匹配结果。

可行实现方案

方案1:修正BETWEEN写法

适用场景:2021-12-06落在EndDate往前推7天到EndDate的区间内

SELECT EndDate 
FROM MYtable 
WHERE '2021-12-06' BETWEEN DATEADD(day, -7, EndDate) AND EndDate

方案2:使用DATEDIFF写法(更灵活,可读性更高)

如果需求是两个日期的间隔天数小于7天,不管EndDate在2021-12-06之前还是之后:

SELECT EndDate 
FROM MYtable 
WHERE ABS(DATEDIFF(day, EndDate, '2021-12-06')) < 7

如果需要排除间隔刚好7天的情况,将<7改为<=6即可,逻辑更直观。

注:不同数据库的日期函数参数可能略有差异,比如MySQL中实现日期加减需要用DATE_ADD(EndDate, INTERVAL -7 DAY)写法,可根据你使用的数据库类型微调函数语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:24:02