MySQL получить текущий + N предыдущих месяцев - PullRequest
1 голос
/ 30 марта 2020

У меня есть запрос, который возвращает результаты за 3 месяца:

    SELECT *
    FROM table
    WHERE 
    DATE(created) >= DATE(NOW() - INTERVAL 3 MONTH)
    ORDER BY created

Я хочу показать текущий и три месяца до него. Так как сегодня 30/03/2020, должно отображаться:

- March 2020 (current month)
- February 2020 (-1 month)
- January 2020 (-2 months)
- December 2019 (-3 months)

Как я могу изменить свой запрос для достижения его с помощью MySQL?

1 Ответ

1 голос
/ 30 марта 2020

Вы можете использовать следующий фильтр:

created >= date_format(current_date, '%Y-%m-01') - interval 3 month

Обоснование:

  • date_format(current_date, '%Y-%m-01') дает начало текущего месяца

  • затем вы можете вычесть 3 месяца из этого, чтобы получить начало периода поиска

Обратите внимание, что фильтры применяются непосредственно к сохраненной дате, без преобразования: это будет быть более эффективным, чем использование условия, включающего функцию даты.

...