查找当前星期的开始日期(星期一)

问题描述:

查找将确定当前星期的开始日期(星期一)的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 

我看到的谷歌和*上很多的“解决方案”。外观类似:

SET @pInputDate = CONVERT(VARCHAR(10), @pInputDate, 111) 
SELECT DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

失败的原因是: 太阳2010年10月10日 - >启动周的星期一二零一零年十月一十一日(这是不正确的)。

+0

你需要找到只在周一或每周的第一个工作日? – 2010-10-14 19:41:19

+0

无论是工作日还是假日,我都希望每周的开始(星期一)。 – 2010-10-14 21:22:16

尝试使用DATEFIRST明确设置星期几为“第一”。

set DATEFIRST 1 --Monday 
select DATEADD(DD, 1 - DATEPART(DW, @pInputDate), @pInputDate) 

这将返回InputDate落在周的星期一。

+0

我发现了另一个解决方案,但这个更简单,更清洁。谢谢。 – 2010-10-14 21:27:32

+0

我们如何才能找到星期一的最后一个星期?我试图在表达中而不是1-表达,但没有运气。有什么建议么? – 2017-09-12 06:28:45