我的csv导入没有格式化日期

时间:2015-08-09 23:15:39

标签: php mysql database date mysqli

我似乎无法获取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。

1 个答案:

答案 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答案一致。