MySQL时间戳字段不接受unix_timestamp()结果

时间:2015-07-07 14:35:42

标签: mysql

我有一个mysql表,其中包含 TIMESTAMP 类型的 date 列。 我正在尝试使用 LOAD DATA LOCAL INFILE 加载大量数据。 一切正常,但日期列不能填充从字符串创建的自定义unix时间戳。这是SQL查询:

LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE names FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (@nm) set `name`=@nm, `gender`='female', `date`=UNIX_TIMESTAMP(STR_TO_DATE('2015-06-07 09:21:44', '%Y-%m-%d %H:%i:%s')); 

也尝试了这个:

LOAD DATA LOCAL INFILE '/path/to/file.csv' INTO TABLE names FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n' (@nm) set `name`=@nm, `gender`='female', `date`=UNIX_TIMESTAMP('2015-06-07 09:21:44');

问题是,日期字段填充了 0000-00-00 00:00:00

有谁知道这可能是什么问题?

2 个答案:

答案 0 :(得分:1)

如果date是数据类型TIMESTAMP,请执行

 `date` = '2015-06-07 09:21:44'

不需要STR_TO_DATEUNIX_TIMESTAMP的严谨性。当在需要其中一种数据类型的上下文中时,MySQL会将字符串文字(以该格式)隐式转换为DATEDATETIMETIMESTAMP数据类型。

如果要将值存储到数字列而不是UNIX_TIMESTAMP,则需要使用TIMESTAMP函数返回整数值。

答案 1 :(得分:1)

尝试删除 lower = lambda x, *args: x[i] - a upper = lambda x, *args: b - x[i] UNIX_TIMESTAMP功能。

STR_TO_DATE字段使用TIMESTAMP格式(与yyyy-mm-dd hh:mm:ss相同)。