Mysql按时间差异删除()

时间:2011-04-15 20:16:06

标签: php mysql

我想删除时差为5分钟的每一行。我使用time()作为int。

mysql_query("DELETE FROM users WHERE time()-time > 300");

查询是问题...

3 个答案:

答案 0 :(得分:5)

time()是一个PHP函数 - 在SQL中绝对没有意义。

你应该:

  • 使用MySQL的datetime functions之一
    • 要获得UNIX时间戳,我认为unix_timestamp(now())可能会做到这一点。
  • 或者从SQL查询中获取time(),因此它由PHP评估。


例如,使用第二个想法,我想你可以这样做:

mysql_query("DELETE FROM users WHERE " . time() . "-time > 300");

答案 1 :(得分:4)

假设时间是users表中的一列,这就是您所需要的:

mysql_query("DELETE FROM users WHERE NOW() - INTERVAL 300 SECOND > time");

NOW()是一个在数据库服务器而不是Web服务器上带回时间的函数。

只需确保数据库服务器和Web服务器上的时钟已同步

以下是使用SELECT

的示例
mysql> select now(),(now() - INTERVAL 300 SECOND);
+---------------------+-------------------------------+
| now()               | (now() - INTERVAL 300 SECOND) |
+---------------------+-------------------------------+
| 2011-04-15 16:21:41 | 2011-04-15 16:16:41           |
+---------------------+-------------------------------+

答案 2 :(得分:0)

mysql_query(“DELETE FROM users WHERE time<'”。(time() - 300)。“'”);

此查询将由mysql缓存