Dadurch erhalten Sie den letzten Monat:
WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
Dies ab Anfang des Monats:
WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();
Das BETWEEN ist nichts Besonderes, es ist nur eine Abkürzung für
dateColumn <= ... AND dateColumn >= ....
Hmm, ich schätze, der NOW()-Vergleich wird eigentlich nicht benötigt, da alle Datensätze vor jetzt liegen werden.
Also mach einfach:
WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')
Dynamischer Beginn des aktuellen Monats:
WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY
Alles, was dies tut, ist, den Tag des Monats aus dem aktuellen Datum zu extrahieren und dann entsprechend viele Tage weniger einen davon abzuziehen.