Sử dụng DATE_FORMAT() để trích xuất tháng-năm, kết hợp GROUP BY MONTH(), YEAR().
Cú pháp
SELECT DATE_FORMAT(date_column, '%m-%Y') AS month_year FROM table_name GROUP BY MONTH(date_column), YEAR(date_column) DESC;
Ví dụ minh họa
mysql> CREATE TABLE GroupMonthAndYearDemo (DueDate DATETIME); Query OK, 0 rows affected (1.49 sec) mysql> INSERT INTO GroupMonthAndYearDemo VALUES (NOW()), (DATE_ADD(NOW(), INTERVAL 2 YEAR)), (DATE_ADD(NOW(), INTERVAL -2 YEAR)), (DATE_ADD(NOW(), INTERVAL 1 YEAR)), (DATE_ADD(NOW(), INTERVAL -1 YEAR)); Query OK, 5 rows affected
Dữ liệu (giả sử NOW = 2018-12-06):
+---------------------+ | DueDate | +---------------------+ | 2018-12-06 13:12:34 | | 2020-12-06 13:12:59 | | 2016-12-06 13:13:08 | | 2019-12-06 13:13:14 | | 2017-12-06 13:13:19 | +---------------------+
Truy vấn nhóm:
mysql> SELECT DATE_FORMAT(DueDate, '%m-%Y') FROM GroupMonthAndYearDemo GROUP BY MONTH(DueDate), YEAR(DueDate) DESC;
Kết quả:
+-------------------------------+ | DATE_FORMAT(DueDate, '%m-%Y') | +-------------------------------+ | 12-2020 | | 12-2019 | | 12-2018 | | 12-2017 | | 12-2016 | +-------------------------------+
Các định dạng DATE_FORMAT thường dùng
| Format | Kết quả | Mô tả |
|---|---|---|
%m-%Y |
12-2018 | Tháng 2 số - Năm 4 số |
%M %Y |
December 2018 | Tên tháng đầy đủ - Năm |
%Y-%m |
2018-12 | ISO format, tốt cho sắp xếp |
%b %Y |
Dec 2018 | Tên tháng viết tắt |
Lưu ý
GROUP BY MONTH(), YEAR()đảm bảo nhóm đúng theo tháng-năm, không bị trộn tháng giữa các năm.DESCsắp xếp mới nhất trước.- Thường dùng kèm hàm tổng hợp:
COUNT(*), SUM(amount).