Mailinglisten-Archive |
Hallo Michael, > Hallo zusammen, > > ich bin seit circa 4 Monaten passives Mitglied dieser > Mailinggruppe. Bisher habe ich mir immer nur angesehen, mit welchen > Problemen sich die Kollegen rumschlagen, :-) > > Heute muss ich mal aktiv ins Geschehen eingreifen, da ich ein > Problem habe, dass ich bisher nicht performant genung gelöst bekomme. > > > Und zwar möchte ich einen Zeitbereich im Zeitbereich abfragen. > Beispiel: Vom 01.06.2005 bis zum 09.06.2005 alle Ereignisse, die > pro Tag zwischen 12:00 und 16:00 aufgetreten sind. Fällt euch da > eine gute Lösung ein? > > "SELECT * FROM whatever WHERE timestamp > '01.06.2005' AND > timestamp < '09.06.2005'" ist logisch, aber wie bekomme ich jetzt > für die 8 Tage die dazwischen liegen in einem SQL Statement jeweils > die Werte raus!? Das Ergebnis dieses Queries soll einfach nur die > Anzahl Einträge im Bereich zwischen 12:00 und 16:00 pro Tag > darstellen. Ich müsste also insgesamt 8 Zahlen als Output bekommen. > Ist das möglich? Oder muss ich da mit ner händischen PHP Schleife > rumtricksen, wie ich es im Moment mache!? > Wenn ich Dich richtig verstanden habe dann würde ich das vielleicht über die HOUER() und GROUP() Funktion von MySQL probieren. ( http://dev.mysql.com/doc/mysql/de/date-and-time-functions.html http://dev.mysql.com/doc/mysql/de/group-by-functions.html ) SELECT COUNT(*) anzahl, DATE(timestamp) datum FROM whatever WHERE timestamp > '01.06.2005' AND timestamp < '09.06.2005' AND HOUR(timestamp) > 12 AND HOUR(timestamp) < 16 GROUP BY DATE(timestamp) ORDER BY timestamp So würde ich das Probieren ist aber nicht getestet :) Ob das dann die Performateste MySQL Lösung ist kann ich Dir aber nicht sagen aber bestimmt andere.. Gruß Aron
php::bar PHP Wiki - Listenarchive