SQL Die ersten und letzten 4 Stunden ausselektieren?

Hattrix

Cadet 4th Year
Dabei seit
März 2007
Beiträge
111
Hallo,

ich möchte bei einem SQL-Befehl die ersten und letzten 4 Stunden nicht mit angezeigt bekommen:

Code:
SELECT DATE_FORMAT(datum,'%d.-%T'), id FROM zeit WHERE id='1' AND modus = 'tag' ORDER BY datum DESC
Wie kann ich das in diesem SQL-Befehl einbauen?
 

nkler

Lieutenant
Dabei seit
Juli 2006
Beiträge
585
wie ist denn deine Tabelle aufgebaut?
 

Hattrix

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
März 2007
Beiträge
111
Sie besteht nur aus id, datum und modus.

id ist numerisch
datum eben datetime
modus ein varchar
 

tb_85

Cadet 3rd Year
Dabei seit
Juli 2007
Beiträge
35
Hi,

Was meinst du mit den ersten und letzten 4 Stunden?

Von einer bestimmten Uhrzeit oder immer von der aktuellen Uhrzeit ?
 

Hattrix

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
März 2007
Beiträge
111
Ich speichere logs und inserte sie in die DB in diese Tabelle.
Nehmen wir an, ich würde die Logs anfangen am 1.6.2009, 0 Uhr zu speichern und würde am 6.6.2009, 0 Uhr diese von mir gewollte SQL-Anweisung ausführen wollen, dass ich die Logs von 1.6.2009, 0 bis 4 Uhr und 5.6.2009, 20 bis 24 Uhr nicht sehe.
 

pvc-junkie

Ensign
Dabei seit
Juni 2007
Beiträge
156
Du ermittelst mittels eines Subquerys die MIN und MAX Werte, wendest auf diese die DATE_ADD Funktion an und hast letztendlich ein Intervall das du mit BETWEEN verwenden kannst.

Also in etwa:
Code:
SELECT * FROM a WHERE datum BETWEEN DATE_ADD((SELECT MIN(datum) FROM a), INTERVAL 4 HOURS) AND DATE_SUB((SELECT MAX(datum) FROM a), INTERVAL 4 HOURS);
 
Zuletzt bearbeitet: (DATE_SUB ist vielleicht besser als 2x DATE_ADD)
Top