Bạn có thể nhóm trên -tất cả- bất cứ thứ gì bạn muốn. Nếu bạn có thể lấy một cái gì đó trong một cột để hiển thị những gì bạn muốn, bạn có thể nhóm trên đó. Vì vậy, chỉ trong hai khoảng thời gian, bạn có thể chỉ cần nhóm vào if:
SELECT * FROM table
GROUP BY if(stamp between "2005-07-01" and "2006-02-01", 0, 1)
Nếu bạn cần khoảng thời gian dao động trong khoảng thời gian dài hơn (nhiều năm), bạn có thể sử dụng period_diff để phân biệt:
SELECT * FROM table
GROUP BY floor(period_diff( DATE_FORMAT(stamp, "%Y%m"), "200507") / 6)
Nó sẽ cung cấp cho bạn số khối 6 tháng được chuyển giữa ngày của bạn và khoảng thời gian bắt đầu ở định dạng năm tháng.