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

แปลงสตริงวันที่เป็น DATETIME ใน MySQL ตามรูปแบบที่กำหนด

ใช้ STR_TO_DATE() พร้อม Format Specifier ที่ตรงกับรูปแบบสตริงต้นทาง

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

1. สร้างตารางเก็บวันที่เป็น VARCHAR

mysql> create table DemoTable (AdmissionDate varchar(100));
mysql> insert into DemoTable values('Wed, 19 Jun 2019 04:10:20');

2. แปลงด้วย STR_TO_DATE

mysql> SELECT STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') FROM DemoTable;

ผลลัพธ์

+---------------------------------------------------------+
| STR_TO_DATE(AdmissionDate, '%a, %d %b %Y %H:%i:%s EDT') |
+---------------------------------------------------------+
| 2019-06-19 04:10:20                                     |
+---------------------------------------------------------+

Format Specifiers ที่ใช้ในตัวอย่าง

Specifierความหมายตัวอย่าง
%aชื่อวันสั้น (3 ตัวอักษร)Wed
%dวันที่ (00-31)19
%bชื่อเดือนสั้น (3 ตัวอักษร)Jun
%Yปี 4 หลัก2019
%Hชั่วโมง 24 ชม. (00-23)04
%iนาที (00-59)10
%sวินาที (00-59)20
EDTตัวอักษรคงที่ (Timezone)EDT

หมายเหตุสำคัญ

  • รูปแบบต้องตรงกับข้อมูลต้นทาง ทุกตัวอักษร รวมถึงช่องว่าง, จุลภาค
  • ชื่อวัน/เดือนขึ้นกับ lc_time_names (Locale) ค่าเริ่มต้นเป็นอังกฤษ
  • MySQL 8.0+ รองรับ STR_TO_DATE กับ Timezone ได้ดีขึ้น