เมื่อต้องการแทรกวันที่ในรูปแบบข้อความเฉพาะ (เช่น '26/11/2018') ลงในคอลัมน์ DATETIME ให้ใช้ STR_TO_DATE() เพื่อแปลงข้อความเป็นวันที่ก่อน Insert
รูปแบบคำสั่ง
INSERT INTO yourTableName
VALUES (value1, value2, ..., STR_TO_DATE('date_string', 'format_mask'));
ตาราง Format Specifiers สำคัญ
| Format | คำอธิบาย | ตัวอย่าง |
|---|---|---|
%Y | ปี 4 หลัก | 2018 |
%y | ปี 2 หลัก | 18 |
%m | เดือน 01-12 | 11 |
%c | เดือน 1-12 | 11 |
%d | วันที่ 01-31 | 26 |
%e | วันที่ 1-31 | 26 |
%H | ชั่วโมง 00-23 | 14 |
%h / %I | ชั่วโมง 01-12 | 02 |
%i | นาที 00-59 | 30 |
%s / %S | วินาที 00-59 | 59 |
%M | ชื่อเดือนเต็ม | November |
%b | ชื่อเดือนย่อ | Nov |
%W | ชื่อวันเต็ม | Monday |
%a | ชื่อวันย่อ | Mon |
%T | เวลา 24 ชม. (HH:MM:SS) | 14:30:59 |
%r | เวลา 12 ชม. AM/PM | 02:30:59 PM |
ตัวอย่างการใช้งาน
1. สร้างตาราง
mysql> CREATE TABLE BookDateDemo (
-> BookName VARCHAR(200),
-> BookIssueDate DATETIME
-> );
Query OK, 0 rows affected (0.44 sec)
2. แทรกวันที่รูปแบบ YYYY-MM-DD
mysql> INSERT INTO BookDateDemo VALUES
-> ('Let us C', STR_TO_DATE('2018-11-28', '%Y-%m-%d')),
-> ('The C++ Programming', STR_TO_DATE('2018-11-29', '%Y-%m-%d')),
-> ('C in Depth', STR_TO_DATE('2018-11-20', '%Y-%m-%d'));
3. ตรวจสอบผลลัพธ์
mysql> SELECT * FROM BookDateDemo;
+---------------------+---------------------+
| BookName | BookIssueDate |
+---------------------+---------------------+
| Let us C | 2018-11-28 00:00:00 |
| The C++ Programming | 2018-11-29 00:00:00 |
| C in Depth | 2018-11-20 00:00:00 |
+---------------------+---------------------+
3 rows in set (0.00 sec)
รูปแบบวันที่ที่พบบ่อยในประเทศไทย
| รูปแบบข้อความ | Format Mask | SQL ตัวอย่าง |
|---|---|---|
| 26/11/2561 | %d/%m/%Y | STR_TO_DATE('26/11/2561', '%d/%m/%Y') |
| 26 พฤศจิกายน 2561 | %d %M %Y | STR_TO_DATE('26 November 2018', '%d %M %Y') |
| 2561-11-26 | %Y-%m-%d | STR_TO_DATE('2018-11-26', '%Y-%m-%d') |
| 26-11-2561 14:30 | %d-%m-%Y %H:%i | STR_TO_DATE('26-11-2018 14:30', '%d-%m-%Y %H:%i') |
หมายเหตุ: MySQL เก็บวันที่เป็น Buddhist Era (พ.ศ.) ไม่ได้ ต้องแปลงเป็น ค.ศ. ก่อน Insert (ลบ 543)