查找将确定当前周的开始日(星期一)的SQL查询/查询.
示例:如果今天是 - >那么本周的开始是
Sat Oct 09, 2010 -> Start of the week is Monday Oct 04, 2010
Sun Oct 10, 2010 -> Start of the week is Monday Oct 04, 2010
Mon Oct 11, 2010 -> Start of the week is Monday Oct 11, 2010
Tue Oct 12, 2010 -> Start of the week is Monday Oct 11, 2010
Run Code Online (Sandbox Code Playgroud)
我在Google和StackOverflow上看到过很多"解决方案".看起来像:
SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111)
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate)
Run Code Online (Sandbox Code Playgroud)
这是因为:2010年10月10日星期日 - > 2010年10月11日星期一开始(这是不正确的).
p.c*_*ell 19
尝试使用DATEFIRST明确设置星期几被视为"第一".
set DATEFIRST 1 --Monday
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate)
Run Code Online (Sandbox Code Playgroud)
这将返回InputDate落入的星期一.
小智 8
建立在 p.campbell 的解决方案之上,如果您不想使用或不能使用“SET DATEFIRST 1”,您可以通过执行以下操作来解决这个问题:
SELECT DATEADD(DD, 2 - DATEPART(DW, DATEADD(DD, -1, @pInputDate)), DATEADD(DD, -1, @pInputDate))
Run Code Online (Sandbox Code Playgroud)