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

วิธีแปลงชื่อเดือนสตริงเป็นตัวเลขเดือนใน MySQL

ใช้ 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 ตามรูปแบบ