ใช้ STR_TO_DATE() แปลงชื่อเดือนสั้น (Jan, Feb...) เป็น DATE แล้วดึง MONTH()
รูปแบบ %b ใน STR_TO_DATE() รับชื่อเดือนย่อ 3 ตัวอักษร (Jan, Feb, Mar...) แปลงเป็น DATE แล้ว MONTH() ดึงเลขเดือน
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
MonthName VARCHAR(100)
);
INSERT INTO DemoTable (MonthName) VALUES ('Jan'), ('Mar');
ข้อมูลในตาราง
+----+-----------+ | Id | MonthName | +----+-----------+ | 1 | Jan | | 2 | Mar | +----+-----------+
คำสั่งแปลงชื่อเดือนเป็นเลข
SELECT MONTH(STR_TO_DATE(MonthName, '%b')) FROM DemoTable;
ผลลัพธ์
+------------------------------------+ | MONTH(STR_TO_DATE(MonthName, '%b')) | +------------------------------------+ | 1 | | 3 | +------------------------------------+
คำอธิบาย:
STR_TO_DATE(MonthName, '%b')แปลง 'Jan' → '2000-01-01' (ปี default 2000), 'Mar' → '2000-03-01'MONTH(...)ดึงเลขเดือน 1, 3%b= Abbreviated month name (Jan-Dec),%M= Full month name (January-December)
รูปแบบวันที่อื่นๆ สำหรับ STR_TO_DATE:
| Format | ความหมาย | ตัวอย่าง Input |
|---|---|---|
| %b | เดือนย่อ 3 ตัว | Jan, Feb, Mar |
| %M | เดือนเต็ม | January, February |
| %m | เดือน 2 หลัก | 01, 12 |
| %d | วัน 2 หลัก | 01, 31 |
| %Y | ปี 4 หลัก | 2024 |
ฟังก์ชันคู่: DATE_FORMAT(date, format) แปลง DATE → String ตามรูปแบบ