mmmmmm
A mi ver es más sencillo encontrar el último día del mes con algo como esto:
SELECT dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0));
que revisar si el año es bisiesto o si es de los de 30 o 31
Pero bueno, para gustos los colores
Saludos