isso lhe dará o primeiro dia do mês para uma determinada data
seleção interna
select DATEDIFF(MONTH, 0, GETDATE())
dará o número de meses de 1900-01-01 aqui é 1350
isso será adicionado a 1900-01-01 , mas apenas os meses
select DATEADD(MONTH,1350,0)
vai dar 2012-07-01 00:00:00.000 que é o início do mês atual.
Eu acho que essa é a maneira mais eficiente de encontrar o início de um mês para qualquer data.