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

MS SQL如何实现查询时间戳小于等于上周六06:30:00的数据

MS SQL 上周六6:30及之前数据查询实现方案

直接给出可正常运行的代码方案,适配不同版本场景:

通用兼容方案(支持SQL Server 2008及以上所有版本)

不受实例DATEFIRST配置影响,计算结果稳定:

SELECT * 
FROM [Data] 
WHERE [TimeStamp] <= DATEADD(MINUTE, 6*60 + 30, 
                             DATEADD(DAY, DATEDIFF(DAY, 0, GETDATE()) - (DATEDIFF(DAY, 5, GETDATE()) % 7), 0)
                            )

逻辑说明:

  • DATEDIFF(DAY, 0, GETDATE())取当前日期距离1900-01-01的天数,转换为当前日期零点
  • 1900-01-06是周六,DATEDIFF(DAY, 5, GETDATE()) %7计算得到当前距离上周六的天数,减去对应天数即可拿到上周六零点
  • 最后加6小时30分,得到上周六06:30的时间点
  • 表名Data、字段名TimeStamp属于SQL Server保留字,用方括号包裹避免语法报错

简化写法(仅支持SQL Server 2022及以上版本)

用DATE_BUCKET函数简化日期计算逻辑:

SELECT * 
FROM [Data] 
WHERE [TimeStamp] <= DATEADD(MINUTE, 390,
                             DATE_BUCKET(DAY, 1, GETDATE(), DATEFROMPARTS(1900, 1, 6))
                            )

如果需要适配时区或者替换为指定日期对应的上周六,把GETDATE()替换为对应的日期变量/函数即可,比如时区适配用SYSDATETIMEOFFSET(),指定日期用'2024-05-20'这类合法日期格式即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 05:06:04