ใช้ DATE_FORMAT() ร่วม STR_TO_DATE() แปลงสตริงวันที่รูปแบบ dd-mm-yyyy เป็น mm-yyyy
ตัวอย่างการใช้งาน
สร้างตารางเก็บวันที่เป็น VARCHAR:
mysql> create table DemoTable1931 (ShippingDate varchar(40));
เพิ่มข้อมูล (รูปแบบ dd-mm-yyyy):
mysql> insert into DemoTable1931 values('10-11-2017'),('31-01-2019'),('02-02-2018'),('10-06-2013');
ดูข้อมูลดิบ:
mysql> select * from DemoTable1931;
+--------------+ | ShippingDate | +--------------+ | 10-11-2017 | | 31-01-2019 | | 02-02-2018 | | 10-06-2013 | +--------------+ 4 rows in set (0.00 sec)
คิวรีแปลงรูปแบบ และแสดงคอลัมน์ทั้งหมด
mysql> select
-> date_format(str_to_date(ShippingDate, '%d-%m-%Y'), '%m-%Y') as MonthYear,
-> ShippingDate
-> from DemoTable1931;
ผลลัพธ์:
+-----------+--------------+ | MonthYear | ShippingDate | +-----------+--------------+ | 11-2017 | 10-11-2017 | | 01-2019 | 31-01-2019 | | 02-2018 | 02-02-2018 | | 06-2013 | 10-06-2013 | +-----------+--------------+ 4 rows in set (0.00 sec)
คำอธิบายฟังก์ชัน
STR_TO_DATE(str, format): แปลงสตริงเป็น DATE ตามรูปแบบที่กำหนดDATE_FORMAT(date, format): แปลง DATE เป็นสตริงตามรูปแบบใหม่- รูปแบบทั่วไป:
%d=วัน,%m=เดือน(00-12),%Y=ปี 4 หลัก
แนะนำ: ควรเก็บวันที่ในชนิด DATE หรือ DATETIME ตั้งแต่แรก จะไม่ต้องแปลงซ้ำและ Query เร็วกว่า