我似乎无法在导入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个分号。您是否尝试过您的原始代码,如您所示,没有前两个,但保留最后一个?因此,它将与这个答案一致。