如何删除超过30天的mysql记录?我的代码将删除所有记录,即使是昨天插入的记录。
require('../conn_db.php');
mysql_select_db("my_news",$conn);
mysql_query("SET NAMES utf8");
mysql_query("DELETE FROM my_news WHERE date < DATE_SUB(NOW(), INTERVAL 1 MONTH)");
mysql_close("my_news");
和mysql表
date int(10)
1321095600
1322107200
...
1328288400
1328290440
最佳答案
首先,如果您真的想删除超过 30 天的记录,请改用 INTERVAL 30 DAY
,当您使用 INTERVAL 1 MONTH
时,您将删除添加于火星 31 日,即 4 月 1 日。
此外,您的日期列是 int
类型,DATE_SUB() 将返回格式为 YYYY-MM-DD HH:MM:SS
的日期,所以他们没有可比性。您可以这样做来解决该问题:
DELETE FROM my_news WHERE date < UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 30 DAY))
关于php - 删除超过 30 天的 mysql 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9734901/