Das Folgende funktioniert unabhängig davon, was Sie für den ersten Tag der Woche halten (Sonntag, Montag usw.), stellen Sie nur sicher, dass Sie SET DATEFIRST
verwenden wenn Sie von der Standardeinstellung abweichen möchten. SET DATEFIRST 1
wird den ersten Tag der Woche zum Montag machen.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
BEARBEITEN
Ich habe Ihre Anfrage gerade noch einmal gelesen, und ich denke, Sie wollen etwas anderes als das, was ich oben angegeben habe. Wenn Sie den Wochentag des Monatsersten und -letzten des Monats wollen, reicht dies aus:
SELECT DATENAME(WEEKDAY, DATEADD(DAY, 1 - DATEPART(DAY, GETDATE()), GETDATE())) [FirstDayOfMonth],
DATENAME(WEEKDAY, DATEADD(DAY, - DATEPART(DAY, DATEADD(MONTH, 1, GETDATE())), DATEADD(MONTH, 1, GETDATE()))) [LastDayOfMonth]