บทนำ
การแยกส่วนประกอบของวันที่ (เดือน, ปี, วัน) ใน MySQL ใช้ฟังก์ชัน MONTH(), YEAR(), DAY() ซึ่งทำงานกับชนิดข้อมูล DATE, DATETIME, TIMESTAMP
ตัวอย่างการสร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (
-> DueDate DATETIME
-> );
Query OK, 0 rows affected (0.90 sec)
mysql> INSERT INTO DemoTable VALUES('2019-01-21');
mysql> INSERT INTO DemoTable VALUES('2019-06-15');
mysql> INSERT INTO DemoTable VALUES('2018-12-01');
mysql> INSERT INTO DemoTable VALUES('2015-04-01');
mysql> INSERT INTO DemoTable VALUES('2016-08-14');
แสดงข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์
+---------------------+
| DueDate |
+---------------------+
| 2019-01-21 00:00:00 |
| 2019-06-15 00:00:00 |
| 2018-12-01 00:00:00 |
| 2015-04-01 00:00:00 |
| 2016-08-14 00:00:00 |
+---------------------+
5 rows in set (0.00 sec)
คำสั่งดึงเดือนและปี
mysql> SELECT MONTH(DueDate) AS Month, YEAR(DueDate) AS Year FROM DemoTable;
ผลลัพธ์
+-------+------+
| Month | Year |
+-------+------+
| 1 | 2019 |
| 6 | 2019 |
| 12 | 2018 |
| 4 | 2015 |
| 8 | 2016 |
+-------+------+
5 rows in set (0.00 sec)
ฟังก์ชันวันที่/เวลาอื่นที่เกี่ยวข้อง
| ฟังก์ชัน | คืนค่า | ช่วงค่า |
|---|---|---|
| YEAR(date) | ปี | 1000-9999 |
| QUARTER(date) | ไตรมาส | 1-4 |
| MONTH(date) | เดือน | 1-12 |
| WEEK(date) | สัปดาห์ในปี | 0-53 |
| DAY(date) | วันในเดือน | 1-31 |
| DAYOFWEEK(date) | วันในสัปดาห์ | 1(อา)-7(เส) |
| DAYOFYEAR(date) | วันในปี | 1-366 |
| HOUR(time) | ชั่วโมง | 0-23 |
| MINUTE(time) | นาที | 0-59 |
| SECOND(time) | วินาที | 0-59 |
การประยุกต์: จัดกลุ่มและนับตามเดือน/ปี
SELECT YEAR(DueDate) AS Year, MONTH(DueDate) AS Month, COUNT(*) AS Count
FROM DemoTable
GROUP BY YEAR(DueDate), MONTH(DueDate)
ORDER BY Year, Month;
รูปแบบวันที่ไทย (Buddhist Era)
SELECT
YEAR(DueDate) + 543 AS ThaiYear,
MONTH(DueDate) AS Month,
DAY(DueDate) AS Day
FROM DemoTable;