това ще ви даде първо число от месеца за дадена дата
вътрешен изборselect DATEDIFF(MONTH, 0, GETDATE())
ще даде броя на месеците от 1900-01-01
тук е 1350
това ще бъде добавено към 1900-01-01 , но само месеците
select DATEADD(MONTH,1350,0)
ще даде 2012-07-01 00:00:00.000
което е началото на текущия месец.
Мисля, че това е най-ефективният начин да намерите началото на месец за дадена дата.