• Here is another approach with the advantage of restoring the @@DATEFIRST value after your calculation:

    DECLARE @dt datetime, @date1st int

    -- Save @@DATEFIRST so we can restore it later

    SET @date1st = @@DATEFIRST

    SET DATEFIRST 7

    SET @dt = '10/12/2009'

    -- Change to first of the month

    SET @dt = DATEADD(d,1-DAY(@dt),@dt)

    IF DATEPART(dw,@dt) 7

    -- If not already Saturday, add a day until it is Saturday

    WHILE DATEPART(dw, @dt) 7

    SET @dt = DATEADD(d,1,@dt)

    PRINT CONVERT(nvarchar(30), @dt, 101)

    -- Restore DATEFIRST

    SET DATEFIRST @date1st