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

แทรกวันที่ด้วยรูปแบบเฉพาะใน MySQL ด้วย STR_TO_DATE

เมื่อต้องการแทรกวันที่ในรูปแบบข้อความเฉพาะ (เช่น '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-1211
%cเดือน 1-1211
%dวันที่ 01-3126
%eวันที่ 1-3126
%Hชั่วโมง 00-2314
%h / %Iชั่วโมง 01-1202
%iนาที 00-5930
%s / %Sวินาที 00-5959
%Mชื่อเดือนเต็มNovember
%bชื่อเดือนย่อNov
%Wชื่อวันเต็มMonday
%aชื่อวันย่อMon
%Tเวลา 24 ชม. (HH:MM:SS)14:30:59
%rเวลา 12 ชม. AM/PM02: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 MaskSQL ตัวอย่าง
26/11/2561%d/%m/%YSTR_TO_DATE('26/11/2561', '%d/%m/%Y')
26 พฤศจิกายน 2561%d %M %YSTR_TO_DATE('26 November 2018', '%d %M %Y')
2561-11-26%Y-%m-%dSTR_TO_DATE('2018-11-26', '%Y-%m-%d')
26-11-2561 14:30%d-%m-%Y %H:%iSTR_TO_DATE('26-11-2018 14:30', '%d-%m-%Y %H:%i')

หมายเหตุ: MySQL เก็บวันที่เป็น Buddhist Era (พ.ศ.) ไม่ได้ ต้องแปลงเป็น ค.ศ. ก่อน Insert (ลบ 543)