Minimum und Maximum Datum ausgeben lassen

Halloo,
Schlage mich jetzt schon ein weilchen mit folgenden Problem rum.
Ich habe eine Anwendung, in der ein User ein Von- und Bis-Datum eingeben kann. Nun will ich in der Datenbank suchen ob Datensätze für diesen zeitraum vorliegen und will mir das Minimum- und Maximum-Datum ausgeben lassen.

Beispiel:

User-Eingabe:
Min: 01.01.2009
Max: 31.12.2009

Query bei normaler Suche:

SELECT `timestamp` FROM `daten` WHERE `timestamp` BETWEEN '2009-01-01' AND '2009-12-31'; Ausgabe könnte folgendes sein:

-> [B]2009-08-12 16:00[/B] 2009-08-20 16:00 2009-09-01 16:00 2009-09-10 16:00 2009-10-05 16:00 [B]2009-11-20 16:00 [/B] Was ich nun gerne hätte wären folgende Datensätze

-> 2009-08-12 16:00 2009-11-20 16:00 (Brauche das Ganze um einen Zeitraum festlegen zu können :))

Vielen Dank schon einmal für Antworten. :slight_smile:

(Hat sich erledigt, ich musste die Frage nur noch mal genau lesen)

Ich will mir nur das Minimum und das Maximum Datum ausgeben lassen, was bei einer normalen Suche gefunden werden würde :slight_smile:
Siehe in der mittleren „Code-Box“ ist es der erste und der letzte Datensatz.

select min(timestamp),max(timestamp) from daten where timestamp between ‚2009-01-01‘ AND ‚2009-12-31‘;

Ob min() und max() bei Timestamps funktioniert, weiß ich nicht. Ich denke aber schon.

Ich Depp hatte noch als drittes den timestamp selbst nochmal auslesen lassen und dann hat er wegen nem group problem gemeckert. Aber natürlich. Wozu die Timestamps nochmal auslesen lassen :smiley:

Vielen Dank. Klappt wunderbar =)

Mich interessiert nun folgendes.

Ich lese jetzt die Timestamps aus und prüfe in PHP welchen Zeitraum es darzustellen gibt. Wenn ich den zeitraum habe starte ich einen neuen Query. Der folgender maßen aussehen könnte (Um nach Monaten zu ordnen):

SELECT `daten` FROM `tabelle` WHERE `timestamp` BETWEEN '2009-01-01' AND '2009-12-31' GROUP BY  DATE_FORMAT(`timestamp`, [B]%Y-%m[/B]);

Wollte nun fragen ob folgender Mysql-Abfragen Aufbau funktioniert :smiley:
(Vorsicht imaginärer Code ^^)

# Testen ob Zeit größer als zeitraum Stunde, wenn nicht dann DateFormat -> Minute,
#  ansonsten abfragen ob zeitraum größer Tag, wenn nicht dann DateFormat -> Stunde
# ansonsten DateFormat->Tag
SELECT MIN(`timestamp`) AS `minimum`, MAX(`timestamp`) as maximum  
IF( TIMESTAMP((`maxmimum` - `minimum`)) > 3600, 
   IF( TIMESTAMP((`maxmimum` - `minimum`)) > 86400),
    "%Y-%m-%d" as `dateformat`,
    "%Y-%m-%d %H" as `dateformat`),
"%Y-%m-%d %H:%i" as `dateformat`) ....

Auch wenns kompliziert aussehen mag. Ist zu so etwas zu raten und würde es überhaupt klappen?

Wieso willst du so umständlich rechnen, es gibt doch eine ganze Menge Datum und Zeitfunktion in mysql, da müßte doch was für dich dabei sein.
MySQL :: MySQL 5.0 Reference Manual :: 11.6 Date and Time Functions

Leider deckt keine der Funktionen den Vollständigen Bereich ab, den ich haben will. :frowning:
Am nähesten dran kommt denke ich timestampdiff ( MySQL :: MySQL 5.0 Reference Manual :: 11.6 Date and Time Functions ) Aber selbst hier müsste ich noch für jeden Fall testen, welcher zeitraum vorhanden ist. Mit Zeiträumen habe ich leider nichts gefunden. Wenn da wer was weiß bitte schreiben :slight_smile: Bin für jede Hilfe dankbar =)

(Heute bin ich irgendwie etwas langsam, ich kapiere jetzt erst was du da machen willst)

Keine Ahnung ob es überhaupt geht, aber ich würde das nicht von mysql erledigen lassen.

Ok. Vielen dank für die Meinung. Hab auch schon überlegt ob es überhaupt sinnvoll ist, alles auf Mysql Seite zu machen. Denke da ist es erheblich besser 2 Request zu machen als nur einen und die ganzen „If Operationen“ PHP zu überlassen :slight_smile:

Falls irgendwer vom Gegenteil überzeugt ist, einfach schreiben. Bin immer offen für neue Dinge. Da meine SQL-Kenntnisse nicht all zu gut sind, lasse ich mich da immer gerne eines Besseren belehren :wink: