or this:DECLARE @DateInMonth DATETIMESET @DateInMonth = '20080512'SELECT DATEADD(mm, DATEDIFF(mm, 0, @DateInMonth), 0) + n0 + n1 + n2 FROM (SELECT 0 AS n0 UNION SELECT 1 UNION SELECT 2 UNION SELECT 3) AS z0 CROSS JOIN (SELECT 0 AS n1 UNION SELECT 4 UNION SELECT 8 UNION SELECT 12) AS z1 CROSS JOIN (SELECT 0 AS n2 UNION SELECT 16 UNION SELECT 32 UNION SELECT 48) AS z2WHERE DATEADD(mm, DATEDIFF(mm, 0, @DateInMonth), 0) + n0 + n1 + n2 <= DATEADD(mm, DATEDIFF(mm, 0, @DateInMonth)+1, 0)-1