DATE_ADD
działa dobrze w różnych miesiącach. Problem polega na tym, że dodajesz sześć miesięcy do 2001-01-01
i 1 lipca ma tam być.
Oto, co chcesz zrobić:
SELECT *
FROM mydb
WHERE creationdate BETWEEN "2011-01-01"
AND DATE_ADD("2011-01-01", INTERVAL 6 MONTH) - INTERVAL 1 DAY
GROUP BY MONTH(creationdate)
LUB
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
Aby uzyskać więcej informacji, spójrz na DATA_ADD dokumentacja .
*edytowano w celu poprawnej składni