Quanto segue funzionerà qualunque sia il primo giorno della settimana (domenica, lunedì ecc.), assicurati solo di utilizzare SET DATEFIRST
se vuoi cambiare dall'impostazione predefinita. SET DATEFIRST 1
farà lunedì il primo giorno della settimana.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
MODIFICA
Ho appena riletto la tua richiesta e penso che potresti essere alla ricerca di qualcosa di diverso da quello che ho dato sopra. Se vuoi il giorno della settimana del primo e dell'ultimo del mese questo farà il trucco:
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]