2012-04-24 36 views
0

我有存儲在我的mysql數據庫中的活動日誌,每個日誌時間都有一個註冊日期。我正在嘗試編寫一個簡短的PHP腳本來刪除60天以前的所有日誌。我無法在日期時間格式中比較時間。使用MySQL比較PHP的時間日期時間

這是我有:

$sixty_days_past = strtotime("-60 days"); 

$earliest_time = date("Y-m-d H:i:s", $sixty_days_past); 

$logs_result = mysql_query("SELECT id FROM df_logs WHERE date < '$earliest_time'"); 

    while($logs_row = mysql_fetch_array($logs_result)) { 

     $oldentry = $logs_row['id']; 

     mysql_query("DELETE FROM df_logs WHERE id='$oldentry'");  

    } 

有什麼不對這個查詢?

回答

1

一切。

DELETE FROM `df_logs` WHERE `date` < DATE_ADD(NOW(),INTERVAL -60 DAY) 

完成。


要闡述:

  • 你通過PHP時MySQL是完全能夠做正確的計算
  • 你是不是在反引號包圍的字段名稱,這是一個問題,因爲date是一個關鍵字。
  • 您刪除行一次一個,從而導致查詢的潛在綁定號碼,而不是刪除它們一次全部(如用IN到列表中的ID刪除)
+0

非常好。謝謝你的解釋。 :) – JROB 2012-04-24 00:35:32