• Keep it simple and avoid any reference to SET DATEFIRST!

    DECLARE@Year SMALLINT = 2011

    ;WITH cteCalendar(FirstOfMonth, LastOfMonth)

    AS (

    SELECTDATEADD(MONTH, 12 * @Year + number - 22801, 6) AS FirstOfMonth,

    DATEADD(MONTH, 12 * @Year + number - 22800, -1) AS LastOfMonth

    FROMmaster..spt_values

    WHERETYPE = 'P'

    AND number BETWEEN 1 AND 12

    )

    SELECTDATEADD(DAY, DATEDIFF(DAY, 6, FirstOfMonth) / 7 * 7, 6) AS FirstSunday,

    DATEADD(DAY, DATEDIFF(DAY, 5, LastOfMonth) / 7 * 7, 5) AS LastSaturday

    FROMcteCalendar


    N 56°04'39.16"
    E 12°55'05.25"