Esto le dará el último mes:
WHERE dateColumn BETWEEN SUBDATE(CURDATE(), INTERVAL 1 MONTH) AND NOW();
Esto desde el comienzo del mes:
WHERE dateColumn BETWEEN STR_TO_DATE('2012-09-01', '%Y-%m-%d') AND NOW();
El BETWEEN no es nada especial, es solo un atajo para
dateColumn <= ... AND dateColumn >= ....
Hmm, supongo que la comparación NOW() en realidad no es necesaria, ya que todos los registros serán anteriores.
Así que solo haz:
WHERE dateColumn >= STR_TO_DATE('2012-09-01', '%Y-%m-%d')
Comienzo dinámico del mes actual:
WHERE dateColumn >= CURDATE() - INTERVAL DAY(CURDATE())-1 DAY
Todo lo que hace es extraer el día del mes de la fecha actual, luego restarle la cantidad de días menos uno.