我正试图以这种方式更新一些大表:
<?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
的等效函数来解决这个问题?谢谢! :)
答案 0 :(得分: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'].'"';);
答案 1 :(得分:0)
使用select DATE_FORMAT(CURRENT_DATE(),'%Y-%m-%d')
以Y-m-d格式显示当前日期。