Odpowiedź Quassnoia działa, ale w pewnym sensie pozostawia cię w ryzach za sprzątanie dat, jeśli są to daty w środku dnia (jego początek tygodnia pozostawia cię o jeden dzień wcześniej niż trzeba, jeśli używasz czasu w środku dnia -- możesz przetestować za pomocą GETDATE()).
W przeszłości używałem czegoś takiego:
SELECT
CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)
Dodatkową korzyścią z tego jest to, że używając @@DATEFIRST możesz obsługiwać niestandardowe dni rozpoczęcia tygodnia (domyślnie jest to niedziela, ale za pomocą SET @@DATEFIRST możesz to zmienić).
Wydaje się szalone, że prosta manipulacja datami w SQL Server musi być tak tajemnicza, ale proszę bardzo...