2017-02-18 4 views
0

Ich schreibe gerade ein Code-Snippet, das durch die Datenbank schaut und sieht, ob irgendwelche Admins gerade online sind und sie auf der Seite als online anzeigen.Mysql Subtrahiere 5 Minuten von einem Datumswert

Jedes Mal, wenn ein Benutzer auf einer Seite auf meiner Site blättert (wenn er eingeloggt ist), wird die aktuelle Uhrzeit abgerufen und eine Spalte namens lastseen aktualisiert.

Ich habe eine Rolle Spalte, die einen Benutzer von einem Admin markiert und was ich tun soll Abfrage der Datenbank für alle Administratoren und überprüfen Sie die zuletzt gesehene Spalte und wenn diese Zeit ist innerhalb von 5 Minuten von der aktuellen Zeit dann ausgegeben sie zu einer Reihe, die ich dann später aufnehmen und formatieren kann.

Dies ist, was ich derzeit versuchte, aber nichts kam zurück.

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

Mir Speicherung lastseen als Datum ('Y-M-D-H-I-S') von PHP so wie es diese 2017-02-18 16:07:42 in der Datenbank sucht.

+0

Sure 'INSERT INTO' accounts' ('id',' username', 'password',' role', 'email',' regip', 'experience',' level', 'rank',' lastip', 'deleted',' gebannt', ' regdate', 'lastlogindate',' emailenabled', 'lastseen',' reghash', 'active',' hp') VALUES ('0', 'Testuser', '$ 6 $ Runden = 10000 $ wmknwubJ0IfllHl5 $ Vd25WbsNkxWzgz154i3tE8Z8uu JQuSHdCGIfIgDfvRTfOobpcPJ0G5kaW2OYgd29AtBGm9GLksyaQOklUIr92. ',' Benutzer ',' [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 ') ' möglicherweise zu viel XD –

+0

Stellen Sie sicher, dass die Zeitzone für PHP und MySQL identisch sind. Nur um sicherzustellen, versuchen Sie, die 'lastseen' für ein Administrator-Konto bis Jahr 2018 zu setzen. – zed

+0

Das hat tatsächlich funktioniert, Überprüfung der MYSQL und PHP Zeitzonen jetzt –

Antwort

0

Was ist Ihr Datentyp für lastseen, Ihre Anfrage korrekt scheint, versuchen Sie einfach mit

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' 

Auch Ihre PHP und MYSQL Server haben stellen Sie sicher, gleiche Zeitzonen

+0

Datatype für lastseen ist Datetime. Ich habe versucht, mit dieser Abfrage, aber es gab immer noch keine Ergebnisse zurück. –

+0

überprüfen Sie Ihre php und mysql Zeitzonen sind synchronisiert oder nicht – sumit

Verwandte Themen