間隔で作業する場合 PostgreSQLのデータ型では、間隔出力のフォーマット方法を変更できます。
インターバルを出力できる4つのフォーマットから選択できます。
間隔タイプの出力形式は、次のいずれかのスタイルに設定できます。
-
sql_standard
-
postgres
-
postgres_verbose
-
iso_8601
デフォルトのスタイルはpostgres
。
間隔の形式を変更するには、SET intervalstyle
を使用します 指図。
例
次の例は、make_interval()
の出力を示しています。 さまざまな出力スタイルを使用する場合。
sql_standard
このスタイルは、間隔の値が標準の制限(正と負のコンポーネントが混在しない、年月のみまたは日中のみ)を満たしている場合、間隔リテラル文字列に関するSQL標準の仕様に準拠しています。
それ以外の場合、出力は標準の年月リテラル文字列の後に日中リテラル文字列が続き、混合符号間隔を明確にするために明示的な符号が追加されたように見えます。
年月を使用した例を次に示します。
SET intervalstyle = 'sql_standard';
SELECT make_interval(years => 1, months => 2);
結果:
1-2
以下は別の例です。今回は、年、月、週、日、時間、分、秒を指定します。
SET intervalstyle = 'sql_standard';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
結果:
+1-2 +25 +5:06:07
postgres
postgress
デフォルト設定です。
このスタイルは、DateStyle
の場合、8.4より前のPostgresリリースの出力と一致します。 パラメータがISO
に設定されました 。
SET intervalstyle = 'postgres';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
結果:
1 year 2 mons 25 days 05:06:07
postgres_verbose
このスタイルは、DateStyle
の場合、8.4より前のPostgresリリースの出力と一致します。 パラメータがISO
以外に設定されました 出力。
SET intervalstyle = 'postgres_verbose';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
結果:
@ 1 year 2 mons 25 days 5 hours 6 mins 7 secs
iso_8601
このスタイルは、ISO8601標準のセクション4.4.3.2で説明されている「指定子付きのフォーマット」と一致します。
SET intervalstyle = 'iso_8601';
SELECT make_interval(1, 2, 3, 4, 5, 6, 7);
結果:
P1Y2M25DT5H6M7S