• I found the same problem. When the first of the month is the day in question, it returns the second week. I modified it to this.

    DECLARE @DATE DATETIME,@GETDATE DATETIME,@MONTHSTDATE DATETIME,@STARTDATE DATETIME

    SET DATEFIRST 6

    SET @STARTDATE='06/21/2010'

    SELECT @MONTHSTDATE = CONVERT(DATETIME, CONVERT(VARCHAR(5),DATEPART(MM, @STARTDATE)) + '/01/' + CONVERT(VARCHAR(5),DATEPART(YYYY, @STARTDATE)) +' ' + '00:00:00 AM')

    PRINT @MONTHSTDATE

    PRINT DATEPART(DW,@MONTHSTDATE)

    SET @getdate-2=@MONTHSTDATE - CASE WHEN DATEPART(DW,@MONTHSTDATE) = 1 THEN 0

    ELSE (DATEPART(DW,@MONTHSTDATE)-8)

    END

    PRINT @getdate-2