Následující bude fungovat bez ohledu na to, co považujete za první den v týdnu (neděle, pondělí atd.), jen se ujistěte, že používáte SET DATEFIRST
pokud chcete změnit výchozí nastavení. SET DATEFIRST 1
bude první den v týdnu pondělí.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
UPRAVIT
Právě jsem si znovu přečetl vaši žádost a myslím, že možná hledáte něco jiného, než co jsem uvedl výše. Pokud chcete den v týdnu prvního a posledního v měsíci, bude to stačit:
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]