MySQL выберите завершено в прошлом месяце - PullRequest
0 голосов
/ 28 февраля 2020

Как выбрать все данные за последний месяц (или 30 дней)?

Я уже нашел несколько ответов, и в основном это решение дает

SELECT * 
FROM gigs
WHERE date > DATE_SUB(CURDATE(), INTERVAL 3 MONTH)
ORDER BY date DESC

Но это также дает мне даты из будущего

Меня интересуют только дни из прошлого месяца или 30 дней (не в следующем месяце и далее)

Ответы [ 3 ]

2 голосов
/ 28 февраля 2020

Это то, что вы хотите?

WHERE date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH) AND date <= CURRENT_DATE

Я добавил условие, чтобы фильтры запросов по дате не превышали сегодняшнюю. Я также изменил ваш код, чтобы диапазон дат начинался один месяц go (у вас было 3 месяца).

1 голос
/ 28 февраля 2020

попробуйте этот код

SELECT * FROM gigs
WHERE date BETWEEN CURDATE() - INTERVAL 30 DAY AND CURDATE()
ORDER BY date DESC
0 голосов
/ 28 февраля 2020

Вы просите две разные вещи.

Последние 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) 
...