Computer >> Máy Tính >  >> Lập trình >> MySQL

Làm cách nào để sửa giá trị ngày giờ không chính xác khi chèn vào bảng MySQL?

Để 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)