PostgreSQL で非連続年にわたる時系列を生成する
PostgreSQL で 2 つの日付間の完全な時系列を生成するには、特に複数年にまたがる日付を扱う場合、慎重な考慮が必要です。 generate_series
と extract(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 サイトの他の関連記事を参照してください。