删除超过30天的mysql记录

fis*_*man 5 php mysql sql-delete

如何删除超过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");
Run Code Online (Sandbox Code Playgroud)

和mysql表

date int(10)
1321095600
1322107200
...
1328288400
1328290440
Run Code Online (Sandbox Code Playgroud)

pro*_*oth 8

首先,如果您确实要删除超过30天的记录,请INTERVAL 30 DAY改用,当您使用时INTERVAL 1 MONTH,将删除在Mars 31st上添加的记录,当时它是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))
Run Code Online (Sandbox Code Playgroud)


clo*_*ops 3

您的 MySQL 表不存储日期,而是存储 unix 时间戳(根据您提供的数据判断)。要删除,请执行以下操作:

mysql_query("DELETE FROM my_news WHERE date < ".strtotime('-1 month'));
Run Code Online (Sandbox Code Playgroud)