Lo siguiente funcionará cualquiera que considere el primer día de la semana (domingo, lunes, etc.), solo asegúrese de usar SET DATEFIRST
si desea cambiar el valor predeterminado. SET DATEFIRST 1
hará que el primer día de la semana sea el lunes.
SELECT DATEADD(DAY, 1 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekStart],
DATEADD(DAY, 7 - DATEPART(WEEKDAY, GETDATE()), CAST(GETDATE() AS DATE)) [WeekEnd]
EDITAR
Acabo de volver a leer su solicitud y creo que puede estar buscando algo diferente a lo que he dado anteriormente. Si desea el día de la semana del primero y último del mes, esto funcionará:
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]