Tím získáte poslední měsíc:
WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
Toto od začátku měsíce:
WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();
BETWEEN není nic zvláštního, je to jen zkratka pro
dateColumn <= ... AND dateColumn >= ....
Hmm, myslím, že porovnání NOW() ve skutečnosti není potřeba, protože všechny záznamy budou dříve.
Takže udělejte:
WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')
Dynamický začátek aktuálního měsíce:
WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY
Vše, co to dělá, je extrahovat den v měsíci z aktuálního data a poté od něj odečíst tolik dní méně o jeden.