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

แปลงวันที่ YYYYMMDD เป็น YYYY-MM-DD ใน MySQL

การแปลงรูปแบบวันที่จาก YYYYMMDD เป็น YYYY-MM-DD ใน MySQL

ใช้ STR_TO_DATE() แปลงสตริงเป็น Date ตาม Format ต้นทาง แล้ว DATE_FORMAT() แปลงเป็น Format ปลายทาง

SELECT DATE_FORMAT(STR_TO_DATE(yourColumn, '%Y%m%d'), '%Y-%m-%d') FROM yourTable;

ตัวอย่างการใช้งาน

สร้างตารางเก็บวันที่แบบ String (YYYYMMDD):

mysql> create table DemoTable (
    ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientProjectDeadline varchar(200)
);
mysql> insert into DemoTable(ClientProjectDeadline) values('20121221');
mysql> insert into DemoTable(ClientProjectDeadline) values('20190416');
mysql> insert into DemoTable(ClientProjectDeadline) values('20160624');
mysql> insert into DemoTable(ClientProjectDeadline) values('20170131');

ข้อมูลต้นฉบับ:

+----------+-----------------------+
| ClientId | ClientProjectDeadline |
+----------+-----------------------+
| 1        | 20121221              |
| 2        | 20190416              |
| 3        | 20160624              |
| 4        | 20170131              |
+----------+-----------------------+

คิวรีแปลงเป็น YYYY-MM-DD:

mysql> select date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'), '%Y-%m-%d') from DemoTable;
+----------------------------------------------------------------------+
| date_format(str_to_date(ClientProjectDeadline, '%Y%m%d'), '%Y-%m-%d') |
+----------------------------------------------------------------------+
| 2012-12-21                                                           |
| 2019-04-16                                                           |
| 2016-06-24                                                           |
| 2017-01-31                                                           |
+----------------------------------------------------------------------+

Format Specifiers:

  • %Y - ปี 4 หลัก (2019)
  • %m - เดือน 2 หลัก (01-12)
  • %d - วัน 2 หลัก (01-31)
  • %y - ปี 2 หลัก (19) - ใช้ได้ใน Format ปลายทางได้

ทางลัด (MySQL 8.0+): ใช้ CAST('20190416' AS DATE) โดยตรงได้ หาก Format เป็น YYYYMMDD มาตรฐาน