SQL Die ersten und letzten 4 Stunden ausselektieren?

Hattrix

Cadet 4th Year
Registriert
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?
 
wie ist denn deine Tabelle aufgebaut?
 
Sie besteht nur aus id, datum und modus.

id ist numerisch
datum eben datetime
modus ein varchar
 
Hi,

Was meinst du mit den ersten und letzten 4 Stunden?

Von einer bestimmten Uhrzeit oder immer von der aktuellen Uhrzeit ?
 
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.
 
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)
Zurück
Oben