Das Kürzen von Zeitstempeln auf eine bestimmte Grenze ist ein häufiger Vorgang bei der Datenbankverarbeitung. Für Postgres bietet die Funktion date_trunc eine einfache Möglichkeit, Zeitstempel auf die Stunde oder Minute zu runden. Das Abschneiden auf das nächste 5-Minuten-Intervall erfordert jedoch einen individuelleren Ansatz.
Der unkomplizierte Ansatz
Die typische Lösung für das Abschneiden auf 5 Minuten besteht darin, date_trunc mit zu kombinieren eine ganzzahlige Divisions- und Multiplikationsoperation:
date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
Alternative Methoden
Es gibt zwei alternative Methoden zum Kürzen von Zeitstempeln auf 5-Minuten-Intervalle:
Methode 1: Epochenarithmetik
Diese Methode berechnet die Zeitstempel durch Konvertierung in Epochen-/Unix-Zeit und Abrunden auf das nächste 5-Minuten-Intervall, und es dann wieder in einen Zeitstempel umwandeln. Die folgende Abfrage veranschaulicht diesen Ansatz:
SELECT to_timestamp( floor(EXTRACT(epoch FROM ht.time) / EXTRACT(epoch FROM interval '5 min')) * EXTRACT(epoch FROM interval '5 min') ) FROM huge_table AS ht
Methode 2: date_trunc und date_part
Diese Methode ähnelt dem einfachen Ansatz, verwendet jedoch date_trunc und date_part separat um die Rundung zu erreichen. Die folgende Abfrage veranschaulicht diese Methode:
SELECT date_trunc('hour', ht.time) + date_part('minute', ht.time)::int / 5 * interval '5 min' FROM huge_table AS ht
Leistungsvergleich
Leistungstests an einer großen Tabelle ergaben, dass der einfache Ansatz beide alternativen Methoden übertraf. Die Ergebnisse zeigten:
Method | Run 1 (seconds) | Run 2 (seconds) | Run 3 (seconds) |
---|---|---|---|
Epoch Arithmetic | 39.368 | - | 39.526 |
date_trunc and date_part | 34.189 | - | 37.028 |
Schlussfolgerung
Während die alternativen Methoden eine gewisse Vielseitigkeit und Einfachheit bieten, bietet der unkomplizierte Ansatz mit date_trunc und date_part die schnellste Lösung zum Abschneiden von Zeitstempeln bis 5-Minuten-Intervalle in Postgres.
Das obige ist der detaillierte Inhalt vonWie kann man Zeitstempel in PostgreSQL effizient auf 5-Minuten-Intervalle kürzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!