【问题标题】:SQL: Returning Monday of the week not working for SundaysSQL:返回一周中的星期一不适用于星期日
【发布时间】:2016-06-13 15:32:17
【问题描述】:

我想输入一个日期并让它返回该周的星期一,但在我的公司,这一周从星期一开始,到星期日结束。我尝试使用SET DATEFIRST 1 将星期一设为一周的第一天,但​​这对星期天没有帮助。

代码:

DECLARE @proddate datetime = '6/12/2016'
SET DATEFIRST 1; SELECT DATEADD(wk, DATEDIFF(wk,0,@proddate), 0) MondayOfWeek

返回:

6/9/2016 -> 6/6/2016
6/12/2016 -> 6/13/2016 (should be 6/6/2016)

【问题讨论】:

    标签: sql date


    【解决方案1】:

    试试这个:

    SELECT DATEADD(DAY, 1-DATEPART(WEEKDAY, @proddate), @proddate)
    

    【讨论】:

    • 这行得通,我已经在我的代码中实现了它。顺便问一下,你知道我原来的代码出了什么问题吗?
    • 您的代码可以正常使用,这种方式对 DATEFIRST 语句更敏感。 TBH 我通常会自己使用您的原始代码..
    • 有一个很好的答案here 解释了为什么这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-19
    • 2011-06-20
    • 1970-01-01
    相关资源
    最近更新 更多