Чтобы получить данные за предыдущий месяц:
where customer_date < curdate() + interval (1 - day(curdate()) day
Почему?Прежде всего обратите внимание, что на customer_date
нет вызова функции.Таким образом, это выражение совместимо с индексом и может использовать индекс.
Во-вторых, эта структура работает как для даты, так и для даты / времени.Это очень удобно, потому что это не всегда может быть очевидно, если в столбце есть компонент времени (люди не очень хорошо умеют называть столбцы для сбора этой информации).
Вы утверждаете, что часть "12 месяцев" назадработает.Это не выглядит правильным для меня.Для полной логики:
where customer_date < curdate() + interval (1 - day(curdate()) day and
customer_date >= (curdate() + interval (1 - day(curdate()) day) - interval 1 year)