Berikut ini akan berfungsi apa pun yang Anda anggap hari pertama dalam seminggu (Minggu, Senin, dll), pastikan Anda menggunakan SET DATEFIRST
jika Anda ingin mengubah dari default. SET DATEFIRST 1
akan membuat hari pertama minggu itu senin.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
EDIT
Saya baru saja membaca ulang permintaan Anda dan saya pikir Anda mungkin mengejar sesuatu yang berbeda dengan apa yang saya berikan di atas. Jika Anda ingin hari dalam minggu pertama dan terakhir bulan ini akan melakukan trik:
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]