-3

我有一个 php 脚本,应该在每 15 分钟后从数据库中删除数据。

现在在数据库表中我有一个字段时间戳,它存储每次修改字段时的当前时间戳。

每 15 分钟后,我想检查当前时间与时间戳字段中存储的值之间的差异。

我试过if((time()-$row['timestamp'])>900)//( 900 是秒)

这不起作用,因为时间戳字段还存储日期和当前时间。我该如何进行

4

4 回答 4

3

如果您使用 MySQLTIMESTAMP数据类型存储时间,那么最好使用对TIMESTAMP数据进行操作的 MySQL 函数。TIMESTAMPDIFF()将非常合适,因为它还允许为结果定义单位。

SELECT TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) FROM `my_table`

my_timestamp_column将返回自value以来经过的分钟数(整数) 。将它与 PHP cron 脚本或简单地与页面上的每个请求结合以实现目标:

DELETE FROM `my_table`
WHERE TIMESTAMPDIFF(MINUTE, `my_timestamp_column`, NOW()) > 15

此外,您可能需要阅读手册的日期和时间函数部分以了解其他一些解决方案。

于 2012-05-28T09:16:53.633 回答
2

使用数据库完全处理这个问题是最容易的。使用 CURR_TIME 获取当前时间戳,然后使用 TIMEDIFF() 生成条件

于 2012-05-28T08:50:18.170 回答
2

您已经提到$row['timestamp']以格式存储值。datetime因此要将其转换为时间戳,请使用strtotime()函数。所以现在你的代码将是,

if((time()-strtotime($row['timestamp']))>900) //( 900 is the seconds)

我希望这有帮助

于 2012-05-28T08:53:49.027 回答
2

您也可以使用 SQL 来执行此操作:

DELETE FROM `table` WHERE `timestamp` < UNIX_TIMESTAMP() - 60 * 15
于 2012-05-28T08:54:33.860 回答