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

แปลงสตริงเป็นวันที่ใน MySQL ด้วย STR_TO_DATE() และ Format Specifier

บทนำ

ฟังก์ชัน STR_TO_DATE() ใช้แปลงสตริงเป็น DATE/DATETIME ตามรูปแบบ (Format Specifier) ที่ระบุ ซึ่งเป็นการทำงานตรงข้ามกับ DATE_FORMAT()

รูปแบบการใช้งาน

SELECT STR_TO_DATE(yourColumnName, 'yourFormatSpecifier') FROM yourTableName;

Format Specifier สำคัญ

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

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

mysql> CREATE TABLE DemoTable (
    -> AdmissionDate VARCHAR(100)
    -> );
Query OK, 0 rows affected (0.55 sec)
mysql> INSERT INTO DemoTable VALUES('01-12-2019');
mysql> INSERT INTO DemoTable VALUES('15-06-2019');
mysql> INSERT INTO DemoTable VALUES('21-01-2016');

แสดงข้อมูลทั้งหมด

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+---------------+
| AdmissionDate |
+---------------+
| 01-12-2019    |
| 15-06-2019    |
| 21-01-2016    |
+---------------+
3 rows in set (0.00 sec)

คำสั่งแปลงสตริง 'DD-MM-YYYY' เป็น DATE

mysql> SELECT STR_TO_DATE(AdmissionDate, '%d-%m-%Y') FROM DemoTable;

ผลลัพธ์

+---------------------------------------+
| STR_TO_DATE(AdmissionDate, '%d-%m-%Y') |
+---------------------------------------+
| 2019-12-01                            |
| 2019-06-15                            |
| 2016-01-21                            |
+---------------------------------------+
3 rows in set (0.04 sec)

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

รูปแบบสตริงFormat Specifier
01-12-2019%d-%m-%Y
2019-12-01%Y-%m-%d
12/01/2019%m/%d/%Y
01 Dec 2019%d %b %Y
December 1, 2019%M %d, %Y
2019-12-01 13:30:45%Y-%m-%d %H:%i:%s

ข้อควรระวัง

  • Format Specifier ต้องตรงกับรูปแบบข้อมูล **ทุกตัวอักษร** รวมถึงตัวคั่น (-, /, space)
  • หากไม่ตรง จะคืนค่า NULL
  • ใช้ DATE_FORMAT() สำหรับแปลง DATE → String