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

SQL Server获取上周日至上周六日期的技术问题求助

获取上周日至上周六的日期范围解决方案

我懂你要的是上周日到上周六的完整日期区间,而不是当前周的。你的现有代码逻辑是对的,只是在计算周数偏移的时候差了一步——只需要把周数减1,就能从当前周切换到上一周。

修改后的代码

Declare @now DateTime, @fmWeek DateTime, @toWeek DateTime
Set @now = GetDate()
-- 调整周数偏移:在DateDiff结果后减1,得到上周日的00:00:00.000
Set @fmWeek = Convert(DateTime, DateAdd(wk, DateDiff(wk, 0, @now) - 1, -1))
-- 同样调整周数偏移,得到上周六的23:59:59.997
Set @toWeek = DATEADD(ms,-3,Convert(DateTime, DateAdd(wk, DateDiff(wk, 0, @now) - 1, 6)))
select @fmWeek, @toWeek

逻辑说明

  • 原来的DateDiff(wk, 0, @now)计算的是从SQL Server基准日期(1900-01-01)到当前日期的总周数,在此基础上减1,就定位到了上一周的时间区间。
  • DateAdd(wk, 计算出的上周周数, -1)会返回上周日的0点整,而DateAdd(wk, 上周周数, 6)返回的是上周六的0点,再减去3毫秒就得到了周六的最后一刻(23:59:59.997),确保区间包含当天所有时间。

比如如果当前日期是2018-04-22,修改后的代码会返回2018-04-08 00:00:00.000到2018-04-14 23:59:59.997,完全符合你要的上周日到上周六的范围。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:55:13