字符串到时间戳mysql错误1411

字符串到时间戳mysql错误1411,mysql,Mysql,我试图在将csv文件从字符串导入mysql到datetime数据类型时动态转换时间戳。但是我得到了函数str_to_date error的1411-不正确的日期时间值:“2007-03-30 16:01:15” SQL: load data infile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv' into table test fields terminated by ',' lines terminated by '\n

我试图在将csv文件从字符串导入mysql到datetime数据类型时动态转换时间戳。但是我得到了函数str_to_date error的1411-不正确的日期时间值:“2007-03-30 16:01:15”

SQL:

load data infile 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
into table test
fields terminated by ','
lines terminated by '\n'
(date, col1,col2,col3,col4)
SET
date = str_to_date(date,'%Y.%m.%d %H:%i:%s.%f');
.csv中的所有行的格式如下:

2007.03.30 16:01:15.901,117.53,117.55,35600000,43700000 为了对已经存储在mysql中的数据进行采样,它确实起了作用


目标行日期设置为DATETIME。

您需要通过一个用户变量。正如上面所说:

列列表可以包含列名或用户变量。对于用户变量,SET子句允许您在将结果分配给列之前对其值执行转换

SET子句中的用户变量可以以多种方式使用。以下示例将第一个输入列直接用于t1.column1的值,并将第二个输入列分配给用户变量,该用户变量在用于t1.column2的值之前经过除法运算:


另外,%f格式要求微秒为六位数字,而CSV似乎只包含三位数字;虽然您可以使用字符串操作函数来解决这个问题,但您可以像STR_TO_DATE一样删除%f,并且在任何情况下,您都可以准确地找到错误所在。谢谢也谢谢你的解释。
SELECT str_to_date(date,'%Y.%m.%d %H:%i:%s.%f') FROM test
LOAD DATA INFILE 'file.txt' INTO TABLE t1 (column1, @var1) SET column2 = @var1/100;
LOAD DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 5.5/data/testfile.csv'
  INTO TABLE test
  FIELDS TERMINATED BY ','
  LINES  TERMINATED BY '\n'
  (@date, col1, col2, col3, col4)
  SET date = STR_TO_DATE(@date, '%Y.%m.%d %H:%i:%s.%f');