谁能解释为什么以下内容生成Error Code: 1292. Incorrect datetime value: '11/18/2013 4:49:42 PM' for column 'timestamp' at row 1



LOAD DATA INFILE 'c:\\\\file.txt'
INTO TABLE my_table
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\r\n'
SET timestamp=STR_TO_DATE(@timestamp, '%m/%d/%Y %l:%i:%s %p');



这是文本文件的第一行:
0 b4:52:7d:62:dd:83 -45 11/18/2013 4:49:42 PM
(选项卡似乎无法正确显示,但它们在那里)。


我已经测试了以下查询,它的工作原理很吸引人:
SELECT STR_TO_DATE('11/18/2013 4:49:42 PM', '%m/%d/%Y %l:%i:%s %p');


因此,我无法弄清楚为什么它不能作为较大查询的一部分工作。有任何想法吗?

最佳答案

我认为出现问题是因为首先插入数据,然后将其与SET一起使用,因为您输入的日期格式不正确,无法插入“ datetime”类型字段中,因此该值会丢失。

在我的示例中,我使用了这个(|作为定界符在粘贴此处更容易看到):

#cat /tmp/file
0|b4:52:7d:62:dd:83|-45|11/18/2013 4:49:42 PM|

LOAD DATA INFILE '/tmp/file'
INTO TABLE my_table
FIELDS TERMINATED BY '|'
LINES TERMINATED BY '\r\n'
SET date = STR_TO_DATE(@date, '%m/%d/%Y %l:%i:%s %p');

CREATE TABLE `my_table` (
  `id` int(11) default NULL,
  `mac` text,
  `offset` int(11) default NULL,
  `date` datetime default NULL
)

关于mysql - MySQL STR_TO_DATE()无法使用LOAD DATA INFILE,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20078519/

10-16 08:23