1

我正在尝试创建一个查询来获取过去 20 分钟内看到的用户,但它没有获取正确的结果。“last_seen”行包含用户上次加载页面的时间戳。

mysql_query ("SELECT user,rank,ipaddress FROM " . SQL_PREFIX . "site_sessionWHERE last_seen > ".strtotime("-30 minutes")." order by user desc");

4

4 回答 4

1

尝试:

mysql_query ("SELECT user,rank,ipaddress FROM " . SQL_PREFIX . "site_session WHERE last_seen > (NOW() - INTERVAL 20 MINUTE) order by user desc");

于 2013-01-29T15:53:55.663 回答
1

尝试这个:

SELECT user,rank,ipaddress 
FROM " . SQL_PREFIX . "site_session 
WHERE last_seen > INTERVAL CURRENT_TIMESTAMP - 20 MINUTE
order by user desc
于 2013-01-29T15:44:55.127 回答
1

如果您只是使用 Unix 时间戳,为什么不使用数学?

SELECT ... WHERE last_seen > UNIX_TIMESTAMP() - (60*20)

如果你的列是一个datetime,那么你是:

SELECT ... WHERE last_seen > DATE_SUB(NOW(), INTERVAL 20 MINUTE)

您还需要停止mysql_在新代码中使用函数。它们不再被维护并被正式弃用。看到红框了吗?改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。

于 2013-01-29T15:45:25.487 回答
1

尝试这个

mysql_query ("SELECT user,rank,ipaddress FROM " . SQL_PREFIX . "site_session WHERE last_seen > ".time()-1200." order by user desc");

time() 是一个 php 函数,而不是 mysql

于 2013-01-29T15:46:18.247 回答