Я создаю диаграмму, и я хочу получить данные в течение каждого месяца.
Вот мой первый запрос, который работает:
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, но мне не удалось реализовать его.
Какой-либо пример использования ИНТЕРВАЛА?
Вам нужно DATE_ADD / DATE_SUB
:
AND v.date > (DATE_SUB(CURDATE(), INTERVAL 2 MONTH))
AND v.date < (DATE_SUB(CURDATE(), INTERVAL 1 MONTH))
должно работать.
Я обычно использую
DATE_ADD(CURDATE(), INTERVAL - 1 MONTH)
Это почти то же самое, что и у Пекки, но так вы можете контролировать интервал, чтобы он был отрицательным или положительным...