Để tránh lỗi giá trị ngày giờ không chính xác, bạn có thể sử dụng phương thức STR_TO_DATE ().
Như chúng ta biết định dạng ngày giờ là YYYY-MM-DD và nếu bạn không chèn theo cùng một định dạng, lỗi sẽ được tạo ra.
Hãy để chúng tôi xem những gì thực sự dẫn đến lỗi này. Đối với điều này, chúng ta hãy tạo một bảng mới. Truy vấn để tạo bảng như sau
mysql> create table CorrectDatetimeDemo - > ( - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, - > ArrivalTime datetime - > ); Query OK, 0 rows affected (0.63 sec)
Điều này xảy ra khi chúng tôi cố gắng bao gồm một ngày có định dạng ngày giờ không chính xác
mysql> insert into CorrectDatetimeDemo(ArrivalTime) values('18/02/2019 11:15:45'); ERROR 1292 (22007): Incorrect datetime value: '18/02/2019 11:15:45' for column 'ArrivalTime' at row 1
Để tránh lỗi trên, bạn có thể sử dụng STR_TO_DATE ().
Cú pháp như sau
INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));
Bây giờ, chúng ta hãy chèn lại ngày giờ với định dạng chính xác như trong cú pháp trên.
Truy vấn như sau
mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.21 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.16 sec) mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s')); Query OK, 1 row affected (0.20 sec)
Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select.
Truy vấn như sau
mysql> select *from CorrectDatetimeDemo;
Sau đây là kết quả
+----+---------------------+ | Id | ArrivalTime | +----+---------------------+ | 1 | 2019-02-18 11:15:45 | | 2 | 2017-01-15 10:10:15 | | 3 | 2016-04-12 15:30:35 | +----+---------------------+ 3 rows in set (0.00 sec)