私の経験から、プレゼンテーション以外の理由で日付を char に変換すると、間違いを犯したことになります。また、GetDate を 2 回呼び出すと、異なる応答が期待されます。
DECLARE
@Now datetime,
@WeekStart datetime,
@LastWeekStart datetime,
@LastWeekEnd datetime
SET @Now = GetDate()
SET @WeekStart = DateAdd(wk, DateDiff(wk, 0, @Now), 0) --standard time trimmer
SET @LastWeekStart = DateAdd(wk, -1, @WeekStart)
SET @LastWeekEnd = DateAdd(dd, -1, @WeekStart)
SELECT @Now, @WeekStart, @LastWeekStart, @LastWeekEnd
また、SQL Server が週の始まりと見なす場所を制御する sql 設定があることにも注意してください。そのため、このコードは、その設定によっては月曜日から日曜日にならない場合があります。