ホームページ > データベース > mysql チュートリアル > PostgreSQL で連続しない年の間で時系列を生成するにはどうすればよいですか?

PostgreSQL で連続しない年の間で時系列を生成するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-21 16:44:11
オリジナル
328 人が閲覧しました

How to Generate a Time Series Between Non-Consecutive Years in PostgreSQL?

PostgreSQL で非連続年にわたる時系列を生成する

PostgreSQL で 2 つの日付間の完全な時系列を生成するには、特に複数年にまたがる日付を扱う場合、慎重な考慮が必要です。 generate_seriesextract(doy) を使用する一般的なメソッドは、このようなシナリオでは不正確な結果を生成する可能性があります。

より堅牢なアプローチ

優れたソリューションは、PostgreSQL の generate_series 関数を date_trunc および interval と組み合わせて利用します。この手法により、年に関係なく、あらゆる日付範囲にわたる時系列が確実に生成されます。

次のクエリは、この改良された方法を例にしています:

<code class="language-sql">SELECT date_trunc('day', dd)::date
FROM generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval) dd;</code>
ログイン後にコピー

内訳は次のとおりです:

  • generate_series('2007-02-01'::timestamp, '2008-04-01'::timestamp, '1 day'::interval): 指定された開始日と終了日の間で、1 日ずつ増加する一連のタイムスタンプを生成します。
  • date_trunc('day', dd): この関数は、タイムスタンプを毎日の開始まで切り捨て、時間部分を削除します。
  • ::date: これにより、結果のタイムスタンプが date データ型にキャストされ、よりクリーンな出力が得られます。

この洗練されたアプローチは、PostgreSQL 内で非連続の年にわたる時系列を作成するための正確で信頼できる方法を提供します。

以上がPostgreSQL で連続しない年の間で時系列を生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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