DECLARE @givenDate AS DATETIME
SET @givenDate = '2011-11-05'
SELECT DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,@givenDate)+1,0)), --As date
DAY(DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,@givenDate)+1,0))) --As days
DECLARE @givenMonth AS INT
SET @givenMonth = '11'
SELECT DAY(DATEADD(d,-1,DATEADD(mm, DATEDIFF(m,0,(DATEADD(mm, @givenMonth-1, 0)))+1,0)))