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

MySQL: แปลง TIMESTAMP ให้ได้ชื่อเดือนภาษาอังกฤษ ด้วย DATE_FORMAT('%M')

สร้างตารางและข้อมูลตัวอย่าง

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);