Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Nhóm (GROUP BY) theo tháng và năm trong MySQL


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.
  • DESC sắp xếp mới nhất trước.
  • Thường dùng kèm hàm tổng hợp: COUNT(*), SUM(amount).