我正在尝试创建一个查询来抓取过去 20 分钟内看到的用户,但它没有获取正确的结果。行"last_seen"包含用户上次加载页面的时间戳。
mysql_query ("从
" . SQL_PREFIX . "site_session
选择用户,排名,IP地址"last_seen>".strtotime("-30分钟")"。 用户描述");
试试这个:
SELECT user,rank,ipaddress
FROM " . SQL_PREFIX . "site_session
WHERE last_seen > INTERVAL CURRENT_TIMESTAMP - 20 MINUTE
order by user desc
尝试:
mysql_query ("SELECT user,rank,ipaddress FROM " . SQL_PREFIX . "site_session WHERE last_seen > (NOW() - INTERVAL 20 MINUTE) order by user desc");
如果你只是使用Unix时间戳,为什么不直接使用数学呢?
SELECT ... WHERE last_seen > UNIX_TIMESTAMP() - (60*20)
如果你的列是datetime
,那么你:
SELECT ... WHERE last_seen > DATE_SUB(NOW(), INTERVAL 20 MINUTE)
您还需要停止在新代码中使用mysql_
函数。它们不再维护并被正式弃用。看到红框了吗?请改为了解预准备语句,并使用 PDO 或 MySQLi - 本文将帮助您决定哪个语句。
试试这个
mysql_query ("SELECT user,rank,ipaddress FROM " . SQL_PREFIX . "site_session WHERE last_seen > ".time()-1200." order by user desc");
time() 是一个 PHP 函数,而不是 MySQL