Postgres でタイムスタンプを最も近い 5 分境界に切り詰める
タイムスタンプを特定の間隔に切り詰めるために、Postgres は date_trunc 関数を提供します。時間または分に切り捨てるのは簡単ですが、最も近い 5 分の境界を見つけるのは困難です。
簡単なアプローチでは、date_trunc と数学演算子を組み合わせてタイムスタンプを丸めます。
date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
または、他に 2 つのメソッドが存在します:
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 分境界でタイムスタンプを切り捨てるには、直接的なアプローチが推奨される方法です。エポック方式の方が汎用性が高い場合もありますが、タイムスタンプの丸め処理にはあまり効率的ではありません。
以上がPostgreSQL でタイムスタンプを最も近い 5 分間隔に効率的に切り詰める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。