สร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable1999 ( ArrivalDate timestamp );
mysql> insert into DemoTable1999 values('2019-01-01 12:34:00');
mysql> insert into DemoTable1999 values('2019-12-31 10:04:00');
mysql> insert into DemoTable1999 values('2018-10-11 04:04:30');
ข้อมูลในตาราง
+---------------------+ | ArrivalDate | +---------------------+ | 2019-01-01 12:34:00 | | 2019-12-31 10:04:00 | | 2018-10-11 04:04:30 | +---------------------+
Query ดึงชื่อเดือน
ใช้ DATE_FORMAT(วันที่, '%M') คืนค่าชื่อเดือนเต็ม:
mysql> select date_format(ArrivalDate, '%M') as MonthName from DemoTable1999;
ผลลัพธ์
+-----------+ | MonthName | +-----------+ | January | | December | | October | +-----------+
Format Specifiers สำหรับเดือน
| Format | คำอธิบาย | ตัวอย่าง |
|---|---|---|
| %M | ชื่อเดือนเต็ม (January-December) | January |
| %b | ชื่อเดือนย่อ 3 ตัวอักษร | Jan |
| %m | หมายเลขเดือน 2 หลัก (01-12) | 01 |
| %c | หมายเลขเดือน 1-2 หลัก (1-12) | 1 |
ฟังก์ชันทางเลือก
-- MONTHNAME() คืนค่าชื่อเดือนเต็ม (เทียบเท่า DATE_FORMAT(date, '%M')) SELECT MONTHNAME(ArrivalDate) FROM DemoTable1999; -- MONTH() คืนค่าตัวเลข 1-12 SELECT MONTH(ArrivalDate) FROM DemoTable1999;
กรณีต้องการชื่อเดือนภาษาไทย
MySQL ไม่มี Built-in ต้อง Map เอง:
SELECT CASE MONTH(ArrivalDate)
WHEN 1 THEN 'มกราคม' WHEN 2 THEN 'กุมภาพันธ์' WHEN 3 THEN 'มีนาคม'
WHEN 4 THEN 'เมษายน' WHEN 5 THEN 'พฤษภาคม' WHEN 6 THEN 'มิถุนายน'
WHEN 7 THEN 'กรกฎาคม' WHEN 8 THEN 'สิงหาคม' WHEN 9 THEN 'กันยายน'
WHEN 10 THEN 'ตุลาคม' WHEN 11 THEN 'พฤศจิกายน' WHEN 12 THEN 'ธันวาคม'
END AS ThaiMonth FROM DemoTable1999;
การใช้งานในรายงาน (Report)
SELECT
DATE_FORMAT(ArrivalDate, '%Y-%M') AS YearMonth,
COUNT(*) AS TotalArrivals
FROM DemoTable1999
GROUP BY YearMonth
ORDER BY MIN(ArrivalDate);