在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中文網其他相關文章!