2010-10-14 208 views
8

查找將確定當前星期的開始日期(星期一)的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 

我看到的谷歌和StackOverflow上很多的「解決方案」。外觀類似:

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

回答

12

嘗試使用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

相關問題