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

จะแก้ไขค่าวันที่และเวลาที่ไม่ถูกต้องขณะแทรกในตาราง MySQL ได้อย่างไร


เพื่อหลีกเลี่ยงข้อผิดพลาดค่าวันที่และเวลาที่ไม่ถูกต้อง คุณสามารถใช้เมธอด 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 วินาที)