我当前正在编写一小段代码,这些代码将遍历数据库,查看是否有任何管理员当前在线,并在页面侧面将其显示为在线。
每次用户浏览我网站上的页面时(登录时),它都会获取当前时间并更新称为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具有相同的时区