我当前正在编写一小段代码,这些代码将遍历数据库,查看是否有任何管理员当前在线,并在页面侧面将其显示为在线。

每次用户浏览我网站上的页面时(登录时),它都会获取当前时间并更新称为lastseen的列。

我有一个角色列,用于标记来自管理员的用户,我想要它做的是查询数据库中的所有管理员,并检查lastseen列,如果该时间在当前时间的5分钟之内,然后将其输出到一行然后我可以取出并格式化。

这是我目前尝试的方法,但是什么也没回来。

SELECT username, role, lastseen FROM database.accounts WHERE lastseen >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND role='admin'

我从PHP存储lastseen作为date('Y-m-d H-i-s'),所以它看起来像这样
数据库中的2017-02-18 16:07:42

最佳答案

lastseen的数据类型是什么,您的查询似乎正确,只需尝试使用

SELECT username, role, lastseen FROM database.accounts
WHERE STR_TO_DATE(lastseen, '%Y-%m-%d %H:%i:%s') >= DATE_SUB(NOW(), INTERVAL 10 MINUTE) AND role='admin'


还要确保您的PHP和MYSQL Server具有相同的时区

10-01 00:43