Вы просите две разные вещи.
Последние 30 дней - это просто.
date between now() - interval 30 day and now()
Данные за этот месяц таковы:
date between (last_day(Now() - INTERVAL 1 MONTH) + INTERVAL 1 DAY) and last_day(Now())
Данные за несколько месяцев go выглядят так:
date between (last_day(Now() - INTERVAL 4 MONTH) + INTERVAL 1 DAY)
and
(last_day(Now() - INTERVAL 3 MONTH) + INTERVAL 1 DAY)