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

如何编写SQL视图筛选今日至7天后的日期数据?

解决SQL日期筛选:今日至7天后的数据

嘿,我来帮你搞定这个日期筛选的问题!

你想要的是筛选**今日(包含当天)到7天后(包含当天)**的数据,但之前的写法犯了两个关键错误:

  • 方向搞反了:你用了DATEADD(DAY, -7, GETDATE()),这是取「7天前的时间」,所以>这个条件会把所有晚于7天前的记录都拉出来,包括未来很久的数据,自然不符合需求。
  • 未处理时间部分:如果直接用带时分秒的GETDATE()做比较,会导致区间范围不准确,漏掉部分带时间的记录。

正确的SQL写法分两种情况:

1. 当GettingBackDate是DATE类型(无时间部分)

直接用BETWEEN即可,因为DATE类型只包含日期:

WHERE sl.GettingBackDate BETWEEN CAST(GETDATE() AS DATE) 
                             AND DATEADD(DAY, 7, CAST(GETDATE() AS DATE))

2. 当GettingBackDate是DATETIME/DATETIME2类型(带时间部分)

推荐用范围比较,避免漏掉7天后当天晚于0点的记录:

WHERE sl.GettingBackDate >= CAST(GETDATE() AS DATE)
  AND sl.GettingBackDate < DATEADD(DAY, 8, CAST(GETDATE() AS DATE))

解释:

  • CAST(GETDATE() AS DATE)会去掉当前时间的时分秒,只保留纯日期(比如今天是2018-04-09,就转为2018-04-09)。
  • DATEADD(DAY, 8, CAST(GETDATE() AS DATE))得到的是「今日加8天」的日期,用<这个值就包含了从今日00:00:00到7天后23:59:59的所有时间数据,不会遗漏任何带时间的记录。

验证你的示例数据

假设今日是2018-04-09,筛选区间就是2018-04-09至2018-04-16(7天后):

  • 符合条件的:2018-04-12、2018-04-16(正好在区间内)
  • 被过滤的:其他日期要么早于2018-04-09,要么远晚于2018-04-16,会被正确排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 02:29:35