questo ti darà il primo del mese per una determinata data
inner selectselect DATEDIFF(MONTH, 0, GETDATE())
darà il numero di mesi dal 1900-01-01
ecco 1350
questo verrà aggiunto a 1900-01-01 , ma solo i mesi
select DATEADD(MONTH,1350,0)
darà 2012-07-01 00:00:00.000
che è l'inizio del mese corrente.
Penso che questo sia il modo più efficiente per trovare l'inizio di un mese per una determinata data.