เพื่อหลีกเลี่ยงข้อผิดพลาดค่าวันที่และเวลาที่ไม่ถูกต้อง คุณสามารถใช้เมธอด STR_TO_DATE()
เนื่องจากเราทราบดีว่ารูปแบบวันที่และเวลาคือ ปปปป-ดด-วว และถ้าคุณไม่แทรกในรูปแบบเดียวกัน ข้อผิดพลาดก็จะเกิดขึ้น
ให้เราดูว่าอะไรทำให้เกิดข้อผิดพลาดนี้ สำหรับสิ่งนี้ ให้เราสร้างตารางใหม่ แบบสอบถามในการสร้างตารางมีดังนี้
mysql> สร้างตาราง CorrectDatetimeDemo -> ( -> Id int ไม่ใช่ NULL AUTO_INCREMENT PRIMARY KEY, -> ArrivalTime datetime -> );Query OK, 0 แถวได้รับผลกระทบ (0.63 วินาที)
เกิดขึ้นเมื่อเราพยายามใส่วันที่ที่มีรูปแบบวันที่และเวลาที่ไม่ถูกต้อง
mysql> แทรกลงในค่า CorrectDatetimeDemo(ArrivalTime) ('18/02/2019 11:15:45');ข้อผิดพลาด 1292 (22007):ค่าวันที่และเวลาไม่ถูกต้อง:'18/02/2019 11:15:45' สำหรับ คอลัมน์ 'ArrivalTime' ที่แถวที่ 1
เพื่อหลีกเลี่ยงข้อผิดพลาดข้างต้น คุณสามารถใช้ STR_TO_DATE()
ไวยากรณ์มีดังนี้
INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));
ตอนนี้ ให้เราใส่วันที่และเวลาอีกครั้งด้วยรูปแบบที่ถูกต้องตามที่แสดงในไวยากรณ์ด้านบน
แบบสอบถามมีดังนี้
mysql> แทรกลงในค่า CorrectDatetimeDemo(ArrivalTime) (STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); แบบสอบถาม ตกลง ได้รับผลกระทบ 1 แถว (0.21 วินาที)mysql> แทรกลงในค่า CorrectDatetimeDemo(ArrivalTime) (STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:% s'));แบบสอบถามตกลง 1 แถวได้รับผลกระทบ (0.16 วินาที)mysql> แทรกลงในค่า CorrectDatetimeDemo(ArrivalTime) (STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y % H:%i:%s'));แบบสอบถามตกลง ได้รับผลกระทบ 1 แถว (0.20 วินาที)
แสดงระเบียนทั้งหมดจากตารางโดยใช้คำสั่ง select
แบบสอบถามมีดังนี้
mysql> เลือก *จาก CorrectDatetimeDemo;
ต่อไปนี้เป็นผลลัพธ์
<ก่อนหน้า>+----+---------------------+| รหัส | เวลามาถึง |+----+---------------------+| 1 | 2019-02-18 11:15:45 || 2 | 2017-01-15 10:10:15 || 3 | 2016-04-12 15:30:35 |+-----------+---------------------+3 แถวในชุด (0.00 วินาที)