2016-06-13 6 views
2

Ich möchte ein Datum eingeben und es am Montag der Woche zurückgeben, aber bei meiner Firma beginnt die Woche am Montag und endet am Sonntag. Ich habe versucht mit SET DATEFIRST 1 Montag den ersten Tag der Woche zu machen, aber das half mir nicht mit Sonntagen.SQL: Returning Montag der Woche funktioniert nicht für Sonntage

Code:

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

kehrt:

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

Antwort

1

Try this:

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

Dies funktioniert und ich habe es in meinem Code implementiert. Übrigens, wissen Sie zufällig, was mit meinem ursprünglichen Code nicht stimmt? – whatwhatwhat

+0

Ihr Code war für den normalen Gebrauch gut, dieser Weg ist empfindlicher für die DATEFIRST-Anweisung. TBH Ich würde normalerweise Ihren ursprünglichen Code selbst verwenden. – Mack

+1

Es gibt eine großartige Antwort [hier] (http://stackoverflow.com/questions/7168874/get-first-day-of-week-in-sql-server), die erklärt warum das funktioniert. – Mack

Verwandte Themen