2017-02-18 3276 views
0

我目前正在编写一段代码,它将查看数据库并查看是否有任何管理员当前处于联机状态并在页面上显示他们为在线状态。Mysql从日期值减去5分钟

每次用户浏览我网站上的一个页面(当他们登录时),它抓取当前时间并更新名为lastseen的列。

我有一个角色列,标记来自管理员的用户,我希望它做的是查询所有管理员的数据库,并检查lastseen列,如果该时间是在当前时间的5分钟内,然后输出他们到一排,然后我可以采取和格式后。

这是我目前的尝试,但没有回来。

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

我存储lastseen如日期( 'Y-M-d H-I-S')从PHP所以它看起来像这样 2017-02-18 16:07:42在数据库中。

+0

当然 'INSERT INTO'accounts' ('id','username','password','role','email','regip','experience','level','rank','lastip','deleted','banned', ('0','Testuser','$ 6 $ rounds = 10000 $ wmknwubJ0IfllHl5 $ Vd25WbsNkxWzgz154i3tE8Z8uu('0','Testuser','hp') JQuSHdCGIfIgDfvRTfOobpcPJ0G5kaW2OYgd29AtBGm9GLksyaQOklUIr92','user','[email protected]','72 .0.129.61','250','0','0','72 .0.129.61','0','0','2017 -02-15 06:35:37','2017-02-16 07:26:46','1','2017-02-16 02:27:13','','1','2 ')' 可能已经丢失太多XD –

+0

请确保PHP和MySQL的时区相同。只是为了确保,尝试将管理员帐户的lastseen设置为2018年。 – zed

+0

实际上,现在检查MYSQL和PHP时区 –

回答

0

什么是你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服务器具有相同的时区

+0

lastseen的数据类型是datetime。我试着用这个查询,但它仍然没有返回任何结果。 –

+0

检查你的php和mysql的时区是否同步 – sumit