DATE_ADD
bekerja dengan baik dengan bulan yang berbeda. Masalahnya adalah Anda menambahkan enam bulan ke 2001-01-01
dan 1 Juli seharusnya ada di sana.
Inilah yang ingin Anda lakukan:
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)
ATAU
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
Untuk pembelajaran lebih lanjut, lihat dokumentasi DATE_ADD .
*diedit untuk memperbaiki sintaks