【问题标题】:Finding difference between current time and timestamp field [closed]查找当前时间和时间戳字段之间的差异[关闭]
【发布时间】:2012-05-28 08:48:16
【问题描述】:

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

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

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

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

这不起作用,因为时间戳字段还存储日期和当前时间。 我该怎么办

【问题讨论】:

  • 实际上time() 将返回当前时间戳,因此它应该与您的timestamp 字段兼容。
  • 请使用搜索功能。如何在 PHP 和/或 MySql 中比较时间已经被问过一百次了,we ask you to do your homework 是有原因的。

标签: php timestamp


【解决方案1】:

如果您使用 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 部分以了解其他解决方案。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      希望对你有帮助

      【讨论】:

        【解决方案4】:

        您也可以使用 SQL 来做到这一点:

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

        【讨论】:

          猜你喜欢
          • 2015-03-06
          • 2017-12-21
          • 2014-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多