在MySQL中将列的格式更改为时间戳

时间:2014-05-07 19:21:09

标签: php mysql sql timestamp

我有一个CSV文件,我使用PHP导入MySQL,但问题是时间戳采用以下格式

01/02/2014 00:00:00

我已阅读有关MySQL时间戳的内容,它只接受以下格式

01-02-2014 00:00:00 

据我所知。我想知道是否有一种方法可以将我设置为varchar的列转换为时间戳并将其转换为MySQL将接受的格式?

我可以使用SQL查询或PHP函数来执行此操作吗?而且,行数超过一百万,所以我希望它尽可能快。

任何建议都将不胜感激。

2 个答案:

答案 0 :(得分:2)

  1. 如果您的MySQL列是DATE类型:
  2. $date = date('Y-m-d', strtotime(str_replace('-', '/', $date)));

    1. 如果您的MySQL列是DATETIME类型:
    2. $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

相关问题