2012-11-23 44 views
0

我试图用这种方式来更新一些大表:gmdate(),相当于为MySQL

<?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的等价函数?谢谢! :)

回答

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"); 

使用输出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'].'"';); 
+0

我该如何使用该功能?你能告诉我一个例子吗?我在行['data']中的数据是:“Fri,2012年11月23日10:00:27 +0000”,我需要转换为日期字段 – JackTurky

+0

已更新答案 –

+1

执行时间现在减少了100.000倍。你太棒了!谢谢!!!!!!!!!!!!!!!!! – JackTurky

0

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