phpbar.de logo

Mailinglisten-Archive

[php] PHP & MySQL: Zeitbereich im Zeitbereich

[php] PHP & MySQL: Zeitbereich im Zeitbereich

Aron Schlesinger aron at viplocations.de
Don Jun 9 20:09:08 CEST 2005


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