DATE_ADD
hoạt động tốt với các tháng khác nhau. Vấn đề là bạn đang thêm sáu tháng vào 2001-01-01
và ngày 1 tháng 7 được cho là sẽ ở đó.
Đây là những gì bạn muốn làm:
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)
HOẶC
SELECT *
FROM mydb
WHERE creationdate >= "2011-01-01"
AND creationdate < DATE_ADD("2011-01-01", INTERVAL 6 MONTH)
GROUP BY MONTH(creationdate)
Để tìm hiểu thêm, hãy xem tài liệu DATE_ADD .
* đã chỉnh sửa để đúng cú pháp