查找当前时间和时间戳字段之间的差异

时间:2012-05-28 08:48:16

标签: php timestamp

我有一个php脚本,应该在每次让我们说15分钟后删除数据库中的数据。

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

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

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

这是因为时间戳字段还存储日期和当前时间。 我该怎么办

4 个答案:

答案 0 :(得分:3)

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

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

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

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

此外,您可能需要阅读手册的Date and Time Functions部分以了解其他一些解决方案。

答案 1 :(得分:2)

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

答案 2 :(得分:2)

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

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

我希望这会有所帮助

答案 3 :(得分:2)

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

DELETE FROM `table` WHERE `timestamp` < UNIX_TIMESTAMP() - 60 * 15