DATE_ADD
さまざまな月で問題なく動作します。問題は、2001-01-01
に6か月を追加していることです。 そして7月1日はそこにあるはずです。
これがあなたのやりたいことです:
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)
または
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
詳細については、DATE_ADDドキュメント 。
*構文を修正するために編集