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

MySQL: แปลงข้อมูล VARCHAR เป็นรูปแบบ DATE ด้วย STR_TO_DATE

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

mysql> create table DemoTable1989 ( DueDate varchar(20) );
mysql> insert into DemoTable1989 values('31/01/2015');
mysql> insert into DemoTable1989 values('01/12/2018');
mysql> insert into DemoTable1989 values('25/10/2019');

ข้อมูลก่อนแปลง (รูปแบบ DD/MM/YYYY)

+------------+
| DueDate    |
+------------+
| 31/01/2015 |
| 01/12/2018 |
| 25/10/2019 |
+------------+

Query แปลงเป็น DATE

ใช้ STR_TO_DATE(สตริง, รูปแบบ) รูปแบบ '%d/%m/%Y' ตรงกับ DD/MM/YYYY:

mysql> select str_to_date(DueDate, '%d/%m/%Y') as MySQLDateFormat from DemoTable1989;

ผลลัพธ์ (รูปแบบ YYYY-MM-DD มาตรฐาน MySQL)

+-----------------+
| MySQLDateFormat |
+-----------------+
| 2015-01-31      |
| 2018-12-01      |
| 2019-10-25      |
+-----------------+

รูปแบบวันที่ที่ใช้บ่อย (Format Specifiers)

ตัวแทนความหมายตัวอย่าง
%dวัน (00-31)31
%mเดือน (00-12)01
%Yปี 4 หลัก2019
%yปี 2 หลัก19
%Hชั่วโมง 24 ชม. (00-23)14
%iนาที (00-59)30
%sวินาที (00-59)45

ตัวอย่างรูปแบบอื่นๆ

-- 2019-12-31 14:30:45
STR_TO_DATE('31/12/2019 14:30:45', '%d/%m/%Y %H:%i:%s')

-- Dec 31, 2019
STR_TO_DATE('Dec 31, 2019', '%b %d, %Y')

-- 31-Dec-2019
STR_TO_DATE('31-Dec-2019', '%d-%b-%Y')

การใช้งานจริง: แปลงแล้วเก็บลงคอลัมน์ DATE

ALTER TABLE DemoTable1989 ADD COLUMN DueDateConverted DATE;
UPDATE DemoTable1989 SET DueDateConverted = STR_TO_DATE(DueDate, '%d/%m/%Y');