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

แปลงวันที่รูปแบบ UK (DD/MM/YYYY) เป็น DATE ของ MySQL ด้วย STR_TO_DATE

การแปลงวันที่รูปแบบ UK (Day/Month/Year) ให้เป็น DATE มาตรฐาน MySQL

รูปแบบ UK Date: DD/MM/YYYY (เช่น 10/11/2019 = 10 พฤศจิกายน 2019) ใช้ STR_TO_DATE() ด้วย Format '%d/%m/%Y'

Syntax

SELECT STR_TO_DATE(your_column, '%d/%m/%Y') FROM your_table;

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

สร้างตารางและเพิ่มข้อมูล UK Date:

mysql> CREATE TABLE DemoTable728 (DueDate VARCHAR(100));
Query OK, 0 rows affected (0.59 sec)

mysql> INSERT INTO DemoTable728 VALUES 
    ('10/11/2019'), ('31/01/2016'), ('01/12/2015'), ('11/03/2018');
Query OK, 4 rows affected

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

mysql> SELECT * FROM DemoTable728;
+------------+
| DueDate    |
+------------+
| 10/11/2019 |
| 31/01/2016 |
| 01/12/2015 |
| 11/03/2018 |
+------------+
4 rows in set (0.00 sec)

แปลงเป็น DATE มาตรฐาน (YYYY-MM-DD):

mysql> SELECT STR_TO_DATE(DueDate, '%d/%m/%Y') FROM DemoTable728;
+---------------------------------+
| STR_TO_DATE(DueDate, '%d/%m/%Y') |
+---------------------------------+
| 2019-11-10                      |
| 2016-01-31                      |
| 2015-12-01                      |
| 2018-03-11                      |
+---------------------------------+
4 rows in set (0.00 sec)

Format Specifiers สำหรับ UK Date

  • %d - วัน 2 หลัก (01-31)
  • %m - เดือน 2 หลัก (01-12)
  • %Y - ปี 4 หลัก
  • %c - เดือน 1-2 หลัก (ไม่บังคับ Leading Zero)
  • %e - วัน 1-2 หลัก (ไม่บังคับ Leading Zero)

รูปแบบวันที่ทั่วไปและ Format Mask

แปลงและเก็บลงคอลัมน์ DATE (UPDATE)

ALTER TABLE DemoTable728 ADD DueDateParsed DATE;
UPDATE DemoTable728 SET DueDateParsed = STR_TO_DATE(DueDate, '%d/%m/%Y');

ข้อควรระวัง

  • STR_TO_DATE คืน NULL หากรูปแบบไม่ตรง (เช่น '31/13/2023')
  • ข้อมูล Dirty: ควร Clean ด้วย REPLACE, TRIM ก่อนแปลง
  • MySQL 8.0+ ใช้ CAST(... AS DATE) ได้เฉพาะรูปแบบ ISO
ชื่อรูปแบบตัวอย่างFormat Mask
UK / EU31/12/2023%d/%m/%Y
US12/31/2023%m/%d/%Y
ISO / MySQL2023-12-31%Y-%m-%d
Thai Buddhist31/12/2566%d/%m/%Y (ต้องลบ 543 จากปี)
Compact31122023%d%m%Y