esto le dará el primer día del mes para una fecha determinada
selección internaselect DATEDIFF(MONTH, 0, GETDATE())
dará el número de meses desde 1900-01-01
aquí es 1350
esto se agregará a 1900-01-01, pero solo los meses
select DATEADD(MONTH,1350,0)
dará 2012-07-01 00:00:00.000
que es el comienzo del mes actual.
Creo que esta es la forma más eficiente de encontrar el comienzo de un mes para una fecha determinada.