2016-06-13 22 views
2

私は日付を入力して、その週の月曜日を返しますが、私の会社では週が月曜日に始まり日曜日に終わります。私はSET DATEFIRST 1を使って月曜日を週の最初の日にしようとしましたが、これは日曜日には役に立たなかった。SQL:日曜日に戻ってきた月曜日の返信

コード:

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) 

答えて

1

これを試してみてください:

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

これは動作し、私は私のコードでそれを実装しました。ところで、元のコードで何が間違っていたのか分かりますか? – whatwhatwhat

+0

あなたのコードは通常の使い方には適していましたが、この方法はDATEFIRSTステートメントでより敏感です。 TBH私は通常あなた自身のオリジナルのコードを使用します。 – Mack

+1

大きな回答があります。[here](http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server)なぜこの作品。 – Mack

関連する問題