0

私はこの方法でいくつかの大きなテーブルを更新しようとしています:

<?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 行あり、プロセスが完了するまでに時間がかかりすぎます。gmdatemysqlの同等の機能を使用してこれを解決するにはどうすればよいですか? ありがとう!:)

4

2 に答える 2

4

mysql の STR_TO_DATE 関数を使用して更新できます。この関数を更新クエリで使用します。これを試して

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

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'].'"';);
于 2012-11-23T09:57:01.673 に答える
0

select DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')現在の日付を Ymd 形式で表示するために使用します。

于 2012-11-23T10:26:57.847 に答える