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


my csv import is not formatting the dates

我似乎无法在导入mysql时将csv文件格式化为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表示上午到下午的时间。

为了导入日期,您不必将字符串转换为日期。正如您所注意到的,它将在您删除import语句的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中更多字符串的链接。

这个存储过程和post也可以帮助您:错误代码1292

编辑:

Alex,你的代码有3个分号。您是否尝试过您的原始代码,如您所示,没有前两个,但保留最后一个?因此,它将与这个答案一致。