如何在插入MySQL表时修复错误的datetime值?

为了避免错误的日期时间值错误,可以使用STR_TO_DATE()方法。

我们知道日期时间格式为YYYY-MM-DD,如果您不会以相同的格式插入,则会产生错误。

让我们看看实际导致此错误的原因。为此,让我们创建一个新表。创建表的查询如下

mysql> create table CorrectDatetimeDemo
   - > (
   - > Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   - > ArrivalTime datetime
   - > );

当我们尝试包含日期时间格式不正确的日期时发生

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

为避免上述错误,可以使用STR_TO_DATE()。

语法如下

INSERT INTO yourTableName(yourDateTimeColumnName) VALUES (STR_TO_DATE('yourDateTimeValue','%d/%m/%Y %H:%i:%s'));

现在,让我们以正确的格式再次插入日期时间,如上面的语法所示。

查询如下

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('18/02/2019 11:15:45','%d/%m/%Y %H:%i:%s'));

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('15/01/2017 10:10:15','%d/%m/%Y %H:%i:%s'));

mysql> insert into CorrectDatetimeDemo(ArrivalTime) values(STR_TO_DATE('12/04/2016 15:30:35','%d/%m/%Y %H:%i:%s'));

使用select语句显示表中的所有记录。

查询如下

mysql> select *from CorrectDatetimeDemo;

以下是输出

+----+---------------------+
| 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)