php - 删除超过 30 天的 mysql 记录

标签 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");

和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/

相关文章:

php - 在 PHPUnit 中模拟/ stub FTP 操作

php - 使用需要 MySQL 查询 + PHP 的 AJAX 刷新 DIV

sql - 在 PostgreSQL IF/THEN 语句中使用 DELETE FROM...RETURNING

php - 为什么我的模型只传递单行而不是所有行?

php - 如何使用php在电子商务网站中滚动相关项目

php - 使用 php 发送带有多个复选框的电子邮件

php - 不将字符串输出到文件

PHP - 显示更多文章功能反馈

MySQL 试图删除所有不受外键约束的行

MySQL - 根据列子集重复删除行