• Saw this snippet somewhere and thought it was a good solution:

    DECLARE @Year INT

    SET @Year =2012

    SELECT months,MAX(dates) AS DT_MONTH

    FROM (SELECT MONTH(DATEADD(DAY, number-1, DATEADD(YEAR, @Year-1900, 0))) AS MONTHS,

    DATEADD(DAY, number-1, DATEADD(YEAR, @Year-1900, 0)) AS DATES

    FROM MASTER..spt_values

    WHERE type='P'

    AND number BETWEEN 1 AND DATEDIFF(DAY, DATEADD(YEAR, @Year-1900, 0), DATEADD(YEAR, @Year-1900+1, 0))) AS T

    WHERE DATENAME(WEEKDAY, dates)='Sunday'

    GROUP BY months,DATEADD(MONTH, DATEDIFF(MONTH, 0, dates), 0)

    Probably covers the 95% of tasks out there.