Heim >Datenbank >MySQL-Tutorial >Wie kann man Zeitstempel in PostgreSQL effizient auf das nächste 5-Minuten-Intervall kürzen?

Wie kann man Zeitstempel in PostgreSQL effizient auf das nächste 5-Minuten-Intervall kürzen?

Barbara Streisand
Barbara StreisandOriginal
2024-12-26 15:52:10659Durchsuche

How to Efficiently Truncate Timestamps to the Nearest 5-Minute Interval in PostgreSQL?

Zeitstempel in Postgres auf die nächste 5-Minuten-Grenze kürzen

Um Zeitstempel auf bestimmte Intervalle zu kürzen, bietet Postgres die Funktion date_trunc. Während die Kürzung auf Stunden oder Minuten unkompliziert ist, stellt das Finden der nächstgelegenen 5-Minuten-Grenze eine Herausforderung dar.

Der unkomplizierte Ansatz besteht darin, date_trunc mit mathematischen Operatoren zu kombinieren, um den Zeitstempel zu runden:

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'

Alternativ Es gibt zwei weitere Methoden:

Going Through Epoch/Unix Zeit:

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 LIMIT 4000000

Benchmarks:

Informelle Benchmarks zeigen, dass der direkte Ansatz schneller ist als die Epochenmethode:

Method Average Runtime
Straightforward 34.55 seconds
Epoch 39.49 seconds

Fazit:

Der unkomplizierte Ansatz ist die empfohlene Methode für Aufgrund der überlegenen Leistung werden Zeitstempel in Postgres auf die nächste 5-Minuten-Grenze gekürzt. Obwohl die Epochenmethode in einigen Fällen vielseitiger sein kann, ist sie zum Runden von Zeitstempeln nicht so effizient.

Das obige ist der detaillierte Inhalt vonWie kann man Zeitstempel in PostgreSQL effizient auf das nächste 5-Minuten-Intervall kürzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn