首頁 >資料庫 >mysql教程 >如何在 PostgreSQL 中有效地將時間戳截斷為最近的 5 分鐘間隔?

如何在 PostgreSQL 中有效地將時間戳截斷為最近的 5 分鐘間隔?

Barbara Streisand
Barbara Streisand原創
2024-12-26 15:52:10655瀏覽

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

在Postgres 中將時間戳截斷到最近的5 分鐘邊界

為了將時間戳截斷到特定的時間間隔,Postgres 提供了date_trunc 函數。雖然截斷為小時或分鐘很簡單,但找到最近的 5 分鐘邊界卻是一個挑戰。

簡單的方法是將date_trunc 與數學運算符結合起來以舍入時間戳:

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

或者,還有另外兩種方法:

Going Through Epoch/Unix時間:

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

基準:

非正式基準表明,直接方法比紀元更快方法:

Method Average Runtime
Straightforward 34.55 seconds
Epoch 39.49 seconds

結論:

由於其優越的性能,直接的方法是在Postgres 中將時間戳截斷到最近的 5 分鐘邊界的建議方法。儘管 epoch 方法在某些情況下可能更通用,但它對於舍入時間戳的效率並不高。

以上是如何在 PostgreSQL 中有效地將時間戳截斷為最近的 5 分鐘間隔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn