我有一个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 。
有谁知道这可能是什么问题?
答案 0 :(得分:1)
如果date
是数据类型TIMESTAMP
,请执行
`date` = '2015-06-07 09:21:44'
不需要STR_TO_DATE
和UNIX_TIMESTAMP
的严谨性。当在需要其中一种数据类型的上下文中时,MySQL会将字符串文字(以该格式)隐式转换为DATE
,DATETIME
,TIMESTAMP
数据类型。
如果要将值存储到数字列而不是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
相同)。