sql time

Sancheck

Legendäres Mitglied
Hallo,

wie mache ich die Abfrage:


QUOTE
$abfrage = "SELECT user,time FROM sessions WHERE time<NOW()";




aber ich will ausgeben die letzten 5 Minuten


QUOTE
$abfrage = "SELECT user,time FROM sessions WHERE time>NOW()-5";




Danke liebe mysql pro's
biggrin.gif


und nochwas.,...wie stelle ich sicher dass keine mysql junctions enthalten sind, also vl. gibts ne funktion die ich einfach drueber schmeisse ueber so eine post variable ....
 
Das sollte es wohl auch tun, sofern die "time" in Sekunden gespeichert wird:

$RECENT_ACTIVITY_MINUTES = 5;
$abfrage = 'SELECT user,time FROM sessions WHERE time>'. time() - $RECENT_ACTIVITY_MINUTES*60;

(die 5 kann man natuerlich auch in das Kommando mit rein nehmen, aber so kann man die z.B. leichter in eine Config-Datei auslagern...)
 
QUOTE (jAuer @ So 27.07.2008, 15:40) Bitte nicht so.

Für Beginner ist es absolut ausreichend. Andere Lösungen sind komplexer Natur und schrecken nur von einer Implementierung ab. Lieber so, als gar nichts.
 
QUOTE (Sancheck @ So 27.07.2008, 13:43) ne die zeit is so im format: 2008-07-27 10:10:20

Dann sollte folgendes gehen:

$RECENT_ACTIVITY_MINUTES = 5;
$abfrage = 'SELECT user,time FROM sessions WHERE UNIX_TIMESTAMP(time)>'. time() - $RECENT_ACTIVITY_MINUTES*60;
 
QUOTE (stalkerX @ So 27.07.2008, 11:47) Gegen mySQL-Injektionen: http://de.php.net/manual/de/function.mysql...cape-string.php


QUOTE
$abfrage = "SELECT user,time FROM sessions WHERE time > DATE_ADD(time, INTERVAL -5 MINUTE)";



Nicht getestet, so aus dem Gehirn geschüttelt.

Also,
in dem time steht z.b.
2008-07-27 10:10:20

nur funktionieren tut das leider ned... er gibt immer noch das aus obwohl jetzt schon 18.10
 
Hi Sancheck,
bin zwar nicht so der SQL-Guru aber versuch es mal so:
CODE $abfrage = "SELECT user,time FROM sessions WHERE time BETWEEN DATE_ADD(CURRENT_TIMESTAMP , INTERVAL -5 MINUTE) AND CURRENT_TIMESTAMP)";


Gruß
Peter

 
QUOTE (Peter H @ So 27.07.2008, 18:36)
CODE $abfrage = "SELECT user,time FROM sessions WHERE time BETWEEN DATE_ADD(CURRENT_TIMESTAMP , INTERVAL -5 MINUTE) AND CURRENT_TIMESTAMP)";



Oder kürzer:

CODE $abfrage = "SELECT user,time FROM sessions WHERE time > DATE_ADD(CURRENT_TIMESTAMP , INTERVAL -5 MINUTE)";



Und was
QUOTE Lieber so, als gar nichts.
angeht - ich bin eher ein Freund von direkt richtig lernen als bewusst fehlerhaft anfangen und diese Fehler dann nie wieder richtig ausgemerzt zu bekommen.
Daher empfehle ich Jürgens Links.
Aber das hängt halt auch immer vom Typ des Lernenden ab...

Gruß,
Tom
 
@tsc ja ich auch, und das mitm escape mach ich schon lang , aber ich weis auch adss das nicht das gelbe vom ei ist! aber ich haet gern ne "gute funktion", die das schuetzt.
Ich denke sowas laesst sich entwickeln.
 
Geeignet ist die Erstellung seiner Abfragen als Stored Procedure, was mittlerweile endlich auch in mySQL verfügbar gemacht wird.

Das bringt zum einen den Vorteil das die Performance einer solchen Prozedur höher ist als bei einer Abfrage die aus dem Script gesendet wird, zum Andern liegt die Abfrage in der SP schon "compiliert" in der DB vor und selbst wenn anderer SQL-Code über die Variablenübergabe eingeschleust wird führt die DB nur die compilierte Abfrage aus und behandelt den Rest als das was sie ist - ein Variableninhalt.

Vereinfacht gesagt.
 
Zurück
Oben