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

SQL查询需求:获取上周日3:00至下周日2:59的时间范围

精准获取周日至周日的时间区间(3:00 AM - 2:59 AM)

需求说明

需获取最近的周日凌晨3:00到下一个周日凌晨2:59的时间区间,要求:

  • 无论哪天执行查询,区间都准确匹配:比如8/29(周四)执行时,区间为8/25/2024 3:00 AM - 9/1/2024 2:59 AM;9/1(周日)执行时,区间为9/1/2024 3:00 AM - 9/8/2024 2:59 AM。
  • 兼容不同地区的周起始日设置(@@DATEFIRST为1即周一为周首,或7即周日为周首),确保周日执行时区间仍为周日至周日。

修正后的SQL查询

SELECT
    StartDate = DATEADD(HOUR, 3, StartDateRaw),
    EndDate = DATEADD(MINUTE, 179, DATEADD(DAY, 7, StartDateRaw))
FROM (
    -- 获取最近的周日(当天为周日则取当天,否则取上周日)的零时间点
    SELECT
        StartDateRaw = CASE
            WHEN DATEPART(dw, GETDATE()) = IIF(@@DATEFIRST = 7, 1, 7)
            THEN CAST(GETDATE() AS DATE)
            ELSE DATEADD(DAY, 
                -(DATEPART(dw, GETDATE()) - IIF(@@DATEFIRST = 7, 1, 7) + 7) % 7, 
                CAST(GETDATE() AS DATE)
            )
        END
) AS DateCalculations

逻辑解释

  1. StartDateRaw计算:
    • 通过IIF(@@DATEFIRST = 7, 1, 7)适配不同地区的周日标识:当@@DATEFIRST=7(周日为周首)时,DATEPART(dw)返回1代表周日;当@@DATEFIRST=1(周一为周首)时,DATEPART(dw)返回7代表周日。
    • 如果当前日期是周日,直接取当天的零时间点;否则计算需要往前推的天数,定位到上周日的零时间点。
  2. StartDate:在StartDateRaw基础上加3小时,得到周日凌晨3:00。
  3. EndDate:将StartDateRaw加7天(得到下周日的零时间点),再加179分钟(即2小时59分),精准得到下周日凌晨2:59。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 03:00:07