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

แปลงวันที่รูปแบบไม่มาตรฐานใน MySQL ด้วย STR_TO_DATE

แปลง String วันที่แบบ Text เป็น DATE/DATETIME

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

ตัวอย่าง: "April 04 2019" → 2019-04-04

CREATE TABLE convertDateDemo (AdmissionDate VARCHAR(200));

INSERT INTO convertDateDemo VALUES
('April 04 2019'), ('May 05 2018'), ('January 01 2012'), ('June 12 2016');

คำสั่งแปลง

SELECT STR_TO_DATE(AdmissionDate, '%M %e %Y %l:%i%p') AS ConvertDate
FROM convertDateDemo;

ผลลัพธ์

+---------------------+
| ConvertDate         |
+---------------------+
| 2019-04-04 00:00:00 |
| 2018-05-05 00:00:00 |
| 2012-01-01 00:00:00 |
| 2016-06-12 00:00:00 |
+---------------------+

Format Specifiers ที่ใช้

Specifierความหมายตัวอย่าง
%Mชื่อเดือนเต็มJanuary, April
%eวัน (1-31) ไม่มี Leading Zero4, 12
%Yปี 4 หลัก2019
%l:%i%pเวลา 12 ชม. (ชั่วโมง:นาที AM/PM)12:00AM

รูปแบบทั่วไปอื่นๆ

  • '%d/%m/%Y' - 31/12/2023
  • '%Y-%m-%d' - 2023-12-31 (ISO)
  • '%m-%d-%Y %H:%i:%s' - 12-31-2023 23:59:59
  • '%W, %M %e, %Y' - Sunday, December 31, 2023

ข้อควรระวัง

  • Format ต้องตรงกับข้อมูลทุกตัวอักษร (รวม Space, Comma)
  • คืน NULL ถ้า Format ไม่ตรง
  • ควรทำ Clean Data ก่อน (TRIM, REPLACE)