ホームページ > データベース > mysql チュートリアル > PostgreSQL でタイムスタンプを 5 分間隔に効率的に切り詰める方法

PostgreSQL でタイムスタンプを 5 分間隔に効率的に切り詰める方法

Patricia Arquette
リリース: 2025-01-03 21:02:10
オリジナル
964 人が閲覧しました

How to Efficiently Truncate Timestamps to 5-Minute Intervals in PostgreSQL?

PostgreSQL でタイムスタンプを 5 分間隔に効率的に切り捨てる

タイムスタンプを特定の境界に切り捨てることは、データベース処理で頻繁に行われる操作です。 Postgres の場合、date_trunc 関数はタイムスタンプを時または分に丸める簡単な方法を提供します。ただし、最も近い 5 分間隔に切り捨てるには、よりカスタマイズされたアプローチが必要です。

単純なアプローチ

5 分切り詰めの一般的な解決策は、date_trunc と整数の除算と乗算操作:

date_trunc('hour', val) + date_part('minute', val)::int / 5 * interval '5 min'
ログイン後にコピー

代替方法

タイムスタンプを 5 分間隔に切り捨てるには、2 つの代替方法が存在します:

方法 1:エポック算術

このメソッドは、タイムスタンプをエポック/UNIX 時間に変換し、最も近い 5 分間隔に切り捨ててから、タイムスタンプに変換し直すことによって計算します。次のクエリは、このアプローチを示しています。

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
ログイン後にコピー

方法 2: date_trunc と date_part

この方法は単純なアプローチに似ていますが、date_trunc と date_part を別々に使用します。丸めを実現するために。次のクエリは、この方法を示しています。

SELECT 
    date_trunc('hour', ht.time) 
    + date_part('minute', ht.time)::int / 5 * interval '5 min'
FROM huge_table AS ht
ログイン後にコピー

パフォーマンスの比較

大きなテーブルでのパフォーマンス テストでは、直接的なアプローチが両方の代替方法よりも優れていることがわかりました。結果は次のとおりです。

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

結論

代替方法はある程度の汎用性とシンプルさを提供しますが、date_trunc と date_part を使用した単純なアプローチがタイムスタンプを切り捨てるための最速のソリューションを提供します。 Postgres では 5 分間隔に。

以上がPostgreSQL でタイムスタンプを 5 分間隔に効率的に切り詰める方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート