Poniższe będzie działać niezależnie od tego, jaki uważasz za pierwszy dzień tygodnia (niedziela, poniedziałek itp.), po prostu upewnij się, że używasz SET DATEFIRST
jeśli chcesz zmienić z domyślnego. SET DATEFIRST 1
zrobi pierwszy dzień tygodnia w poniedziałek.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
EDYTUJ
Właśnie ponownie przeczytałem twoją prośbę i myślę, że możesz być po coś innego niż to, co podałem powyżej. Jeśli chcesz określić dzień tygodnia pierwszego i ostatniego dnia miesiąca, to wystarczy:
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]