我似乎无法获取csv文件,以便在导入到mysql时将日期格式化为UTC时间。这是我的查询,如果我取出sql变量和set语句,它导入信息很好,但我需要在utc时间格式化日期。
$query = "
LOAD DATA LOCAL INFILE '".$file."' INTO TABLE instructions
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(route_name,stop_sequence_number,stop_location_id,stop_action,@stop_arrival_time,@stop_departure_time,time_zone);
SET stop_arrival_time = STR_TO_DATE(@stop_arrival_time, '%m/%e/%Y %r');
SET stop_departure_time = STR_TO_DATE(@stop_departure_time, '%m/%e/%Y %r');
";
我没有正确使用STR_TO_DATE格式吗?我查看了有关格式的信息,它表示编号月份为%m,单位数日为%e,四年长度为%y,上午 - 下午时间为%r。
答案 0 :(得分:1)
您无需将字符串转换为日期即可导入日期。正如您所注意到的那样,除了导入语句的STR_TO_DATE部分之后的语句。但是,您将获得一堆看起来像0000-00-00
的列,因为mysql不了解mm/dd/yyyy
格式的日期等等... Mysql仅排除YYYY-MM-DD
格式的日期。
您可以在导入之前在Excel中更改此内容。
要更改excel中的日期格式:右键单击顶部单元格。从下拉列表中选择format cells
。将local
更改为'Afrikans'
之类的内容。选择看起来像2001-03-14
的格式。使用顶部单元格fill down
。然后保存文档。
快速说明:Excel有时会尝试执行太多操作,并会将此列还原为English(U.S)
默认时区。因此,如果您计划进行更多编辑,请确保该列未还原。
以下是dev.mysql上更多字符串文字的链接。
此存储过程和帖子也可能对您有所帮助:Error code 1292
Alex,你的代码中有3个分号。您是否尝试过原来的代码而没有前两个但保留最后一个?因此,它与this答案一致。