• Compare:

    DECLARE @date DATE = '20121202';

    SELECT

    CASE WHEN datename(dw,@date) <> 'Sunday' THEN CONVERT(varchar(10), DATEADD(WK, DATEDIFF(WK, 0, @date), 0),

    103) ELSE CONVERT(varchar(10), DATEADD(WK, DATEDIFF(WK, 0, @date), - 7), 103) END

    go

    DECLARE @date DATE = '20121203';

    SELECT

    CASE WHEN datename(dw,@date) <> 'Sunday' THEN CONVERT(varchar(10), DATEADD(WK, DATEDIFF(WK, 0, @date), 0),

    103) ELSE CONVERT(varchar(10), DATEADD(WK, DATEDIFF(WK, 0, @date), - 7), 103) END

    go

    DECLARE @date DATE = '20121202';

    select dateadd(wk, datediff(wk, 0, DATEADD(dd,-1,@Date)), 0);

    GO

    DECLARE @date DATE = '20121203';

    select dateadd(wk, datediff(wk, 0, DATEADD(dd,-1,@Date)), 0);

    GO