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

ผลลัพธ์เมื่อใช้ EXTRACT() ดึงค่าเวลา จากค่าที่เป็นเฉพาะวันที่อย่างเดียว

เมื่อพยายามดึงส่วนเวลา (HOUR, MINUTE, SECOND) จากค่าที่เป็น เฉพาะวันที่ (DATE) ผลลัพธ์จะไม่ถูกต้องและมีคำเตือน:

ดึง HOUR จาก DATE

mysql> SELECT EXTRACT(HOUR FROM '2017-10-20');
+---------------------------------+
| EXTRACT(HOUR FROM '2017-10-20') |
+---------------------------------+
| 0                               |
+---------------------------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+----------------------------------------------+
| Level   | Code | Message                                      |
+---------+------+----------------------------------------------+
| Warning | 1292 | Truncated incorrect time value: '2017-10-20' |
+---------+------+----------------------------------------------+

ดึง MINUTE จาก DATE

mysql> SELECT EXTRACT(MINUTE FROM '2017-10-20');
+-----------------------------------+
| EXTRACT(MINUTE FROM '2017-10-20') |
+-----------------------------------+
| 20                                |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

คืนค่า 20 (ศตวรรษจากปี 2017) ไม่ใช่นาที!

ดึง SECOND จาก DATE

mysql> SELECT EXTRACT(SECOND FROM '2017-10-20');
+-----------------------------------+
| EXTRACT(SECOND FROM '2017-10-20') |
+-----------------------------------+
| 17                                |
+-----------------------------------+
1 row in set, 1 warning (0.00 sec)

คืนค่า 17 (ปีท้าย 2 หลัก) ไม่ใช่วินาที!

สรุป: ต้องใช้ค่า DATETIME หรือ TIMESTAMP ถึงจะดึงส่วนเวลาได้ถูกต้อง