Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

จัดกลุ่มข้อมูลตาม เดือนและปี ใน MySQL ด้วย DATE_FORMAT


ไวยากรณ์ GROUP BY เดือนและปี

ใช้ DATE_FORMAT() สำหรับแสดงผล และ GROUP BY MONTH(), YEAR() สำหรับจัดกลุ่ม:

SELECT DATE_FORMAT(date_column, '%m-%Y') AS month_year
FROM your_table
GROUP BY MONTH(date_column), YEAR(date_column) DESC;

ตัวอย่างการใช้งาน

สร้างตารางและข้อมูลหลายปี

CREATE TABLE GroupMonthAndYearDemo (DueDate DATETIME);
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));

ข้อมูล (สมมติ 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 |
+---------------------+

คำสั่งจัดกลุ่มเดือนและปี

SELECT DATE_FORMAT(DueDate, '%m-%Y') AS month_year
FROM GroupMonthAndYearDemo
GROUP BY MONTH(DueDate), YEAR(DueDate) DESC;

ผลลัพธ์

+-------------------------------+
| month_year                    |
+-------------------------------+
| 12-2020                       |
| 12-2019                       |
| 12-2018                       |
| 12-2017                       |
| 12-2016                       |
+-------------------------------+

รูปแบบ DATE_FORMAT ที่นิยม

รูปแบบ ตัวอย่าง คำอธิบาย
%m-%Y 12-2024 เดือน 2 หลัก - ปี 4 หลัก
%M %Y December 2024 ชื่อเดือนเต็ม + ปี
%Y-%m 2024-12 มาตรฐาน ISO (เรียงได้ถูกต้อง)
%b %Y Dec 2024 ชื่อเดือนย่อ 3 ตัวอักษร

นับจำนวนต่อกลุ่ม

SELECT DATE_FORMAT(DueDate, '%m-%Y') AS month_year, COUNT(*) AS cnt
FROM GroupMonthAndYearDemo
GROUP BY MONTH(DueDate), YEAR(DueDate)
ORDER BY YEAR(DueDate) DESC, MONTH(DueDate) DESC;