U kunt de eerste van de maand krijgen door de laatste_dag van de maand ervoor te berekenen en één dag toe te voegen. Het is onhandig, maar ik denk dat het beter is dan een datum op te maken als string en die te gebruiken voor berekeningen.
select
*
from
yourtable t
where
/* Greater or equal to the start of last month */
t.date >= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 DAY) and
/* Smaller or equal than one month ago */
t.date <= DATE_SUB(NOW(), INTERVAL 1 MONTH)