任何人都可以解释为什么以下生成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');
所以我无法弄清楚为什么它不能作为更大的查询的一部分工作。有什么想法吗?
答案 0 :(得分:0)
我认为问题出现的原因是数据首先被插入,然后与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
)