我有一个CSV文件,我使用PHP导入MySQL,但问题是时间戳采用以下格式
01/02/2014 00:00:00
我已阅读有关MySQL时间戳的内容,它只接受以下格式
01-02-2014 00:00:00
据我所知。我想知道是否有一种方法可以将我设置为varchar的列转换为时间戳并将其转换为MySQL将接受的格式?
我可以使用SQL查询或PHP函数来执行此操作吗?而且,行数超过一百万,所以我希望它尽可能快。
任何建议都将不胜感激。
答案 0 :(得分:2)
$date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));
$date = date('Y-m-d H:i:s', strtotime(str_replace('-', '/', $date)));
你没有工作strototime(),因为它不适用于破折号分隔符,它会尝试进行减法。
更新,您的日期格式化方式无法使用strtotime(),请改用此代码:
$date = '02/07/2009 00:07:00';
$date = preg_replace('#(\d{2})/(\d{2})/(\d{4})\s(.*)#', '$3-$2-$1 $4', $date);
echo $date;
输出:
2009-07-02 00:07:00
答案 1 :(得分:1)
您将在以下链接(Convert one date format into another in PHP)中看到One可以使用DateTime或strtotime()和date()来创建新格式。
我会使用DateTime:
<?php
$date = date_create_from_format('j-M-Y', '15-Feb-2009');
echo date_format($date, 'Y-m-d');
?>
此解决方案由php文档提供。(http://php.net/manual/en/datetime.createfromformat.php)