使用 str_to_date 函数将数据从文件加载到 MySQL 中的日期时间值不正确

问题描述

这让我发疯了,尝试了 2 天,查看这里和 MysqL 文档但没有成功。

我有一个包含此数据的文件

Test,String 1,Completed,full,04/20/21 12:10:01,1618913401
Test,String 2,04/20/21 12:15:01,1618913701
Test,String 3,04/20/21 12:30:02,1618914602
Test,String 4,04/20/21 13:30:01,1618918201
Test,String 5,04/20/21 14:00:01,1618920001

我正在尝试使用以下命令将其插入到 MysqL 中:

LOAD DATA LOCAL INFILE 'output2.csv'
INTO TABLE test
FIELDS TERMINATED BY ','
LInes TERMINATED BY '\n'
(`Session Type`,`Specification`,`Status`,`Mode`,@StartTime,`Start Time_t`)
SET `Start Time` = STR_TO_DATE(@StartTime,'%d/%m/%y %T');

Result:
Query OK,5 rows affected,10 warnings (0.00 sec)
Records: 5  Deleted: 0  Skipped: 0  Warnings: 10

MariaDB [data]> SHOW WARNINGS;
+---------+------+------------------------------------------------------------------------+
| Level   | Code | Message                                                                |
+---------+------+------------------------------------------------------------------------+
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:10:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:15:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 12:30:02' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 13:30:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
| Warning | 1411 | Incorrect datetime value: '04/20/21 14:00:01' for function str_to_date |
| Warning | 1048 | Column 'Start Time' cannot be null                                     |
+---------+------+------------------------------------------------------------------------+

Start Time 是日期时间类型。

解决方法

如果你仔细观察,日期是令人困惑的美国格式,月份不能是 20 :) 所以只需将格式修改如下

STR_TO_DATE('04/20/21 14:00:01','%m/%d/%y %T');

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...