Fehler in MySQL Abfrage?
Fabienne
- datenbank
Hallo Leute,
ich versuche gerade herauszufinden, ob eine User innerhalb der letzten 1000sec eingeloggt war...
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( UNIX_TIMESTAMP() - 1000 )) AND id='DIE_USER_ID'
Wo steckt mein Fehler?
Thanx an Alle!
Moin,
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( UNIX_TIMESTAMP() - 1000 )) AND id='DIE_USER_ID'
Versuche es mal mit NOW(). Also
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( NOW() - 1000 )) AND id='DIE_USER_ID'
Siehe auch http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html
SteBu
Hallo,
Versuche es mal mit NOW(). Also
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( NOW() - 1000 )) AND id='DIE_USER_ID'
NOW() gibt mir aber keinen Timestamp zurück. Ich rechne aber mit Timestamps und checke, wie viele Sekunden vergangen sind....
Grüße
Wird denn ein Fehler ausgegeben, oder einfach gar nichts?
In welchem Format wird last_login gespeichert?
Hi,
Wird denn ein Fehler ausgegeben, oder einfach gar nichts?
Nein. Es kommt nur das falsche Ergebnis dabei raus.....
» In welchem Format wird last_login gespeichert?
Im DateTime-Format (2005-06-01 10:51:00)
Grüße
Hallo nochmals:
Nachtrag:
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( UNIX_TIMESTAMP() - 1000 )) AND id='DIE_USER_ID'
Ich will nur "irgendwas" erhalten, wenn der User NICHT innerhalb der letzten 1000sec eingeloggt war.
Dannach frage ich ab, ob ich "irgendwas" zurückbekommen habe. Anhand dieser Abfrage gebe ich dann eine Meldung raus ("Du wars schon lange nicht mehr hier....")
Grüße
Tag Fabienne.
SELECT irgendwas FROM users WHERE (UNIX_TIMESTAMP(last_login) > ( UNIX_TIMESTAMP() - 1000 )) AND id='DIE_USER_ID'
Ich will nur "irgendwas" erhalten, wenn der User NICHT innerhalb der letzten 1000sec eingeloggt war.
Dann wäre der Vergleich aber falsch rum formuliert:
SELECT spalten FROM tabelle WHERE (UNIX_TIMESTAMP(last_login)<(UNIX_TIMESTAMP()-1000)) AND id=user_id
Zur Verdeutlichung (aus mySQL-Handbuch, Kap. 7.3.4):
UNIX_TIMESTAMP('1997-10-04 22:23:00' => 875996580 (A)
UNIX_TIMESTAMP()-1000 => 882225357 (B)
Dein Vergleich "A>B" liefert falsch, er soll aber wahr sein (es sind ja mehr als 1000 Sekunden vergangen). Somit müsste er "A<B" lauten.
Siechfred
Hi,
Dann wäre der Vergleich aber falsch rum formuliert:
da is was dran...
SELECT spalten FROM tabelle WHERE (UNIX_TIMESTAMP(last_login)<(UNIX_TIMESTAMP()-1000)) AND id=user_id
Dein Vergleich "A>B" liefert falsch, er soll aber wahr sein (es sind ja mehr als 1000 Sekunden vergangen). Somit müsste er "A<B" lauten.
Siehst Du. Genau das hab ich gesucht. Da stand ich selbst auf der Leitung!
Grüße und Vielen Dank!