cela vous donnera le premier du mois pour une date donnée
select interneselect DATEDIFF(MONTH, 0, GETDATE())
donnera le nombre de mois à partir du 1900-01-01
ici c'est 1350
cela sera ajouté à 1900-01-01 , mais seulement les mois
select DATEADD(MONTH,1350,0)
donnera 2012-07-01 00:00:00.000
qui est le début du mois en cours.
Je pense que c'est le moyen le plus efficace de trouver le début d'un mois pour une date donnée.