DATE_ADD
funguje dobře s různými měsíci. Problém je v tom, že k 2001-01-01
přidáváte šest měsíců a má tam být 1. červenec.
To je to, co chcete udělat:
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)
NEBO
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
Pro další informace se podívejte na dokumentaci DATE_ADD .
*upraveno pro správnou syntaxi