Quassnoiの答えは機能しますが、日付が1日の真ん中の日付である場合は、日付をクリーンアップするためのフックになります(彼の週の始まりは、真ん中の時間を使用する場合に必要な1日早くなります今日の-GETDATE()を使用してテストできます。
私は過去にこのようなものを使用しました:
SELECT
CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL), DATECOL)), 101),
CONVERT(varchar(50), (DATEADD(dd, @@DATEFIRST - DATEPART(dw, DATECOL) - 6, DATECOL)), 101)
これの副次的な利点は、@@ DATEFIRSTを使用することで、非標準の週の開始日を処理できることです(デフォルトは日曜日ですが、SET @@ DATEFIRSTを使用すると、これを変更できます)。
SQL Serverでの単純な日付操作がこの難解なものでなければならないのはおかしなことに思えますが、そこに行きます...