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

如何用MS SQL根据指定日期与星期几查询对应周日期?

在MS SQL中根据指定日期和星期几查找对应周的目标日期

嘿,如果你需要在MS SQL里根据给定日期,定位到它所在周的某个指定星期几的日期,这个简洁的方案可以直接用:

核心SQL语句

SELECT DATEADD(WK, DATEDIFF(WK, @targetWeekday, @inputDate), @targetWeekday);

逻辑拆解

这个公式的思路其实很简单:

  1. 先用 DATEDIFF(WK, @targetWeekday, @inputDate) 算出从目标星期几的基准值到输入日期之间隔了多少周
  2. 再用 DATEADD(WK, ..., @targetWeekday) 把这个周数加到基准值上,就能得到输入日期所在周的目标星期几的具体日期

实际示例(以输入日期'2018-04-04'为例)

这里的@targetWeekday参数对应星期几的规则是基于SQL Server的默认星期设定(周日为一周的起始):

  • 传入6 → 对应周日,返回结果:2018-04-01 00:00:00.000
  • 传入0 → 对应周一,返回结果:2018-04-02 00:00:00.000
  • 传入1 → 对应周二,返回结果:2018-04-03 00:00:00.000
  • 传入2 → 对应周三(和输入日期同一天),返回结果:2018-04-04 00:00:00.000
  • 以此类推:参数3对应周四,4对应周五,5对应周六

进阶:封装成函数复用

如果需要频繁使用这个功能,可以把它封装成自定义函数:

CREATE FUNCTION dbo.GetTargetWeekdayDate(@inputDate DATE, @targetWeekday INT)
RETURNS DATETIME
AS
BEGIN
    RETURN DATEADD(WK, DATEDIFF(WK, @targetWeekday, @inputDate), @targetWeekday);
END

调用的时候就很方便了:

-- 获取2018-04-04所在周的周日日期
SELECT dbo.GetTargetWeekdayDate('2018-04-04', 6);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:22:21