to da ci pierwszy dzień miesiąca dla danego dnia
inner selectselect DATEDIFF(MONTH, 0, GETDATE())
poda liczbę miesięcy od 1900-01-01
tutaj jest 1350
zostanie to dodane do 1900-01-01 , ale tylko w miesiącach
select DATEADD(MONTH,1350,0)
da 2012-07-01 00:00:00.000
który jest początkiem bieżącego miesiąca.
Myślę, że jest to najskuteczniejszy sposób na znalezienie początku miesiąca dla dowolnej daty.