如何在插入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)