mysql - search-timestamp um Stunde der Tag
Habe ich eine Spalte mit dem Namen updatetime
ist ein timestamp
. So, zum Beispiel, durchschnittlich auf der Suche Wert sein könnte: 2011-02-01 09:00:51
. Ich möchte in der Lage sein zu durchsuchen und alle Ergebnisse zurückgegeben werden, die für eine bestimmte Stunde des Tages, unabhängig von dem Datum.
Zum Beispiel, wenn ich suchte die Spalte für die Werte BETWEEN 09:00:00 AND 09:59:99
würde es wieder:
2011-02-01 09:00:51
2011-01-31 09:20:51
2011-01-11 09:55:44
etc....
SELECT * FROM table WHERE updatetime ......
Gedanken?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie die STUNDE() Funktion:
Ach, diese Abfrage wird die Leistung schrecklich, sobald Sie gehen über ein paar tausend Zeilen - Funktionen sind nicht indexiert, also wird es ein full table scan jedes mal, wenn diese Abfrage ausgeführt wird.
Was wir in einer ähnlichen situation: wir erstellten eine weitere Spalte
updatetime_hour
, indexiert, und bevölkerte Sie auf einfügen (und aktualisiert auf update); dann die Abfrage wird schnell:Ja, wir haben die denormalisierten Daten, und es ist ein bisschen mehr Reinigung, aber ich habe noch zu sehen, eine schnellere Lösung. (Wir haben überlegt und gemessen, insert-und update-Trigger zum Auffüllen der
updatetime_hour
ausupdatetime
, entschied sich aber gegen die für Leistung haben, sehen, wenn Sie würden nützlich sein für Sie.)UPDATE yourtable SET updatetime_hour=HOUR(updatetime);
<-- dies wird eine Weile dauernVersuchen mit
STUNDE()
:Dadurch werden alle Zeilen zwischen 09:00:00 und 09:59:59.
Den
HOUR()
nur gibt die Stunde Teil des Datums.Zurückkehren würde, 9..
Möglichkeit:
SELECT * FROM 'table' WHERE HOUR(updatetime)='09';
Diese Antworten nicht funktionieren, das ist was für mich gearbeitet nur