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

如何编写SQL查询每日获取17:00至次日08:00的数据?

修正时间范围以获取前一天17:00至当日08:00的数据

你的当前查询仅覆盖了前一天17:00到前一天24:00的时间段,未包含当日0:00至8:00的部分,以下是修正后的查询逻辑:

修正后的SQL代码

DECLARE @yesterday SMALLDATETIME;
SET @yesterday = DATEADD(DAY,-1,CONVERT(SMALLDATETIME, CONVERT(DATE, GETDATE())));

SELECT [Desired columns]
FROM [Desired Table]
WHERE Start >= DATEADD(HOUR, 17, @yesterday) 
  AND Start < DATEADD(HOUR, 8, CONVERT(SMALLDATETIME, CONVERT(DATE, GETDATE())));

逻辑说明

  • DATEADD(HOUR, 17, @yesterday):定位到前一天的17:00,作为时间范围的起始点
  • DATEADD(HOUR, 8, CONVERT(SMALLDATETIME, CONVERT(DATE, GETDATE()))):定位到当日的08:00,作为时间范围的结束点(使用<而非<=是为了避免包含刚好08:00整的数据,若业务需要包含该时间,可改为<= DATEADD(SECOND, -1, DATEADD(HOUR, 8, CONVERT(DATE, GETDATE()))))

简化写法(无需变量)

如果不需要单独定义变量,也可以直接合并计算逻辑:

SELECT [Desired columns]
FROM [Desired Table]
WHERE Start >= DATEADD(HOUR, 17, DATEADD(DAY, -1, CAST(GETDATE() AS DATE)))
  AND Start < DATEADD(HOUR, 8, CAST(GETDATE() AS DATE));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:15:42