我想删除时差为5分钟的每一行。我使用time()作为int。
mysql_query("DELETE FROM users WHERE time()-time > 300");
查询是问题...
答案 0 :(得分:5)
time()
是一个PHP函数 - 在SQL中绝对没有意义。
你应该:
unix_timestamp(now())
可能会做到这一点。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缓存