Работа с ИНТЕРВАЛОМ и CURDATE в MySQL

Я создаю диаграмму, и я хочу получить данные в течение каждого месяца.

Вот мой первый запрос, который работает:

SELECT s.GSP_nom AS nom, timestamp, AVG( v.vote +  v.prix  ) /2 AS avg
FROM votes_serveur AS v
INNER JOIN serveur AS s ON v.idServ = s.idServ
WHERE s.valide =1
AND v.date > CURDATE() -30
GROUP BY s.GSP_nom
ORDER BY avg DESC

Но, в моем случае я должен записать 12 запросов для получения данных в течение 12 предыдущих месяцев, есть ли любой прием, чтобы не писать:

//  example for the previous month
 AND v.date > CURDATE() -60
AND v.date < CURDATE () -30

Я слышал об ИНТЕРВАЛЕ, я перешел к документу MySQL, но мне не удалось реализовать его.

Какой-либо пример использования ИНТЕРВАЛА?

38
задан halfer 19 November 2014 в 14:02
поделиться

2 ответа

Вам нужно DATE_ADD / DATE_SUB :

AND v.date > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
AND v.date < (DATE_SUB(CURDATE(), INTERVAL 1 MONTH))

должно работать.

64
ответ дан 27 November 2019 в 03:12
поделиться

Я обычно использую

DATE_ADD(CURDATE(), INTERVAL - 1 MONTH)

Это почти то же самое, что и у Пекки, но так вы можете контролировать интервал, чтобы он был отрицательным или положительным...

16
ответ дан 27 November 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: