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

MySQL: แปลง TIMESTAMP ให้ได้หมายเลขเดือน (1-12) ด้วย DATE_FORMAT

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

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') คืนค่าเดือน 2 หลัก (01-12):

mysql> select date_format(ArrivalDate, '%m') as MonthName from DemoTable1999;

ผลลัพธ์

+-----------+
| MonthName |
+-----------+
| 01        |
| 12        |
| 10        |
+-----------+

รูปแบบวันที่อื่นๆ ที่เกี่ยวกับเดือน

Formatคำอธิบายตัวอย่าง
%mเดือน 2 หลัก (01-12)01, 12
%cเดือน 1-2 หลัก (1-12)1, 12
%Mชื่อเดือนเต็มJanuary, December
%bชื่อเดือนย่อ 3 ตัวอักษรJan, Dec

ฟังก์ชันอื่นที่ได้ผลลัพธ์เดียวกัน

-- MONTH() คืนค่าตัวเลข 1-12 (ไม่มี Leading Zero)
SELECT MONTH(ArrivalDate) FROM DemoTable1999;

-- EXTRACT(MONTH FROM date) - SQL Standard
SELECT EXTRACT(MONTH FROM 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;