【问题标题】:gmdate() equivalent for mysqlgmdate() 等效于 mysql
【发布时间】:2012-11-11 15:59:23
【问题描述】:

我正在尝试以这种方式更新一些大表:

<?php
   $tables = array("table1","table2","table3","table4","table5");
   foreach ($tables as $table) {
      $res = mysql_query("SELECT * FROM {$table}");
      while($row = mysql_fetch_array($res)){
        $data = $row['data'];
        $data = gmdate('Y-m-d H:i:s', strtotime($data));
        mysql_query("UPDATE {$table} SET data='$data' WHERE user_id='".$row['user_id']."'";);
      }     
   }
?>

每个表大约有 80.000 行,处理过程将花费太多时间来完成。我如何在mysql中使用gmdate的等效函数来解决这个问题?谢谢! :)

【问题讨论】:

    标签: php mysql timezone timestamp sql-update


    【解决方案1】:

    你可以使用mysql的STR_TO_DATE函数来更新,在更新查询中使用这个函数。试试这个

    SELECT STR_TO_DATE("Fri, 23 Nov 2012 10:00:27 +0000", "%a, %d %b %Y %H:%i:%s +0000");
    

    使用输出 ot STR_TO_DATE 并将其放入您需要的格式。

    您可以使用以下单个更新查询

    mysql_query('UPDATE {$table} SET data= STR_TO_DATE(YOURDATACOLUMN, "%a, %d %b %Y %H:%i:%s +0000"); WHERE user_id="'.$row['user_id'].'"';);
    

    【讨论】:

    • 如何使用该功能?你能给我举个例子吗?我在 row['data'] 中的数据类似于:“Fri, 23 Nov 2012 10:00:27 +0000”,我需要转换为日期字段
    • 执行时间现在减少了 100.000 倍。你太棒了!谢谢!!!!!!!!!!!!!!!!!!!
    【解决方案2】:

    使用select DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d') 以 Y-m-d 格式显示当前日期。

    【讨论】:

      猜你喜欢
      • 2015-10-12
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多