SELECT DATEADD(month, datediff(month, 0, data), 0) + MIN(day(data)) - 1 from Tab WHERE data BETWEEN '2009-01-07' AND '2009-04-21' group by DATEADD(month, datediff(month, 0, data), 0) ;
SELECT MIN(data) from Tab WHERE data BETWEEN '20090107' AND '20090421' group by DATEADD(month, datediff(month, 0, data), 0)