如何使用 php 从 mysql table 中删除超过 30 分钟或 24 小时的数据

How to delete data which is older than 30 minutes or 24 hours from mysql table using php

我想删除插入数据的时间 Column is called Created 比当前时间早 30 分钟或 24 小时的数据行。

我浏览了整个网站,他们一直建议这样做:

mysql_query("DELETE FROM ytable WHERE Created < (NOW() - INTERVAL 30 MINUTES);",$db_con);


或类似的东西,但它永远行不通。

代码的哪一部分是错误的。请帮忙。

你可以使用 DATE_SUB:

.. where Created < DATE_SUB(NOW(), INTERVAL 30 MINUTE)

我相信您只需要从 MINUTES 中删除 'S':

mysql_query("DELETE FROM ytable WHERE Created < (NOW() - INTERVAL 30 MINUTE);",$db_con);

这比任何信息都更具信息性,也许也可以回答您的问题。我正在尝试扩展我上面的长评论。这就是我所做的。这不是圣经,个人偏好占上风。

在您的 MySQL table 中,创建一个 INTEGER,甚至 VARCHAR 也可以。使用 PHP 生成创建时间(从 1970 年开始的一长串数字)。这是这样生成的:

$currentTime = time(); // e.g. 1439823230

这在您的 INSERT 查询中使用,前提是它们也是通过 PHP 发起的。

现在,您还可以为此考虑时区,但这又取决于您的偏好,and/or也许是服务器位置。

现在,当您的数据库中有大量项目时,您始终可以创建自己的时间长度查询,以从中提取数据。例如:

$twentyFourHoursAgo = ($currentTime - 60*60*24);

#Example Query:
SELECT * FROM whatever_table WHERE created > $twentyFourHoursAgo

以上示例将 return 过去 24 小时内的所有内容。根据需要增加你的时间。还要确保绑定您的参数,并且不要像上面的伪类示例那样对它们进行硬编码。


这里有一个有用的资源:http://www.phptherightway.com/

具体来说:http://www.phptherightway.com/#pdo_extension

$time = date('YmdHis', time() - 1800);

$query = mysql_query($db_con, "DELETE FROM ytable WHERE date_time < '$time'");