字符串到时间戳mysql错误#1411

时间:2012-05-29 22:24:58

标签: mysql

我正在尝试将csv文件从字符串导入到日期时间数据类型的mysql时动态转换时间戳。但我收到#1411 - Incorrect datetime value: '2007-03-30 16:01:15' for function str_to_date错误。

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

我申请了

SELECT str_to_date(date,'%Y.%m.%d %H:%i:%s.%f') FROM test

对已经存储在mysql中的数据进行采样,它确实有效。

目标行date设置为DATETIME

1 个答案:

答案 0 :(得分:0)

您需要通过用户变量。正如the manual所说:

  

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

     

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

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');