我的 mysql 数据库中存储有事件日志,每个日志都有一个已注册的日期时间。我正在尝试编写一个简短的 php 脚本来删除所有超过 60 天的日志。我在尝试比较日期时间格式的时间时遇到问题。
这是我所拥有的:
$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'");
}
这个查询有什么问题?
最佳答案
一切。
DELETE FROM `df_logs` WHERE `date` < DATE_ADD(NOW(),INTERVAL -60 DAY)
完成。
<小时/>详细说明:
- 当 MySQL 完全有能力进行正确的计算时,您正在使用 PHP
- 您没有将字段名称括在反引号中,这是一个问题,因为
date
是一个关键字。 - 您一次删除一行,这可能会导致查询数量不受限制,而不是一次全部删除(例如使用
IN
列出要删除的 ID)
关于php - 使用 MySQL Datetime 比较 PHP 中的时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10290182/