PostgreSQLでは、make_timestamptz()
関数を使用すると、タイムゾーン付きのタイムスタンプを作成できます 年、月、日、時、分、秒のフィールド、およびオプションのタイムゾーンフィールドから。
構文
この関数の構文は次のとおりです。
make_timestamptz(year int, month int, day int, hour int, min int, sec double precision, [ timezone text ])
year
、month
、およびday
日付の年、月、日を表す整数、およびhour
時間の部分、min
は分の部分であり、sec
秒の部分です。
時間と分は整数として提供されます 、秒は倍精度として提供されます 。
オプションのtimezone
引数はタイムゾーン用です。指定されていない場合は、現在のタイムゾーンが使用されます。
結果はタイムゾーンのある時間として返されます 。
例
これがデモンストレーションの基本的な例です。
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15);
結果:
1999-03-14 10:35:12.15+10
この場合、タイムゾーンを指定しなかったため、現在のタイムゾーンを使用しました。
次のクエリで返品タイプを確認できます。
SELECT pg_typeof(make_timestamptz(1999, 03, 14, 10, 35, 12.15));
結果:
timestamp with time zone
pg_typeof()
関数は引数のデータ型を返すので、make_timestamptz()
を渡しました 引数として。
タイムゾーンを指定する
この例では、タイムゾーンを明示的に指定しています。
SELECT make_timestamptz(1999, 03, 14, 10, 35, 12.15, 'Indian/Mauritius');
結果:
1999-03-14 16:35:12.15+10
別の例を示しますが、さまざまなタイムゾーン値を使用しています。
\x
SELECT
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACDT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACST'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'ACT'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '+01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, '-01'),
make_timestamptz(2000, 01, 01, 00, 01, 00.00, 'NZ');
結果(垂直出力を使用):
make_timestamptz | 1999-12-31 23:31:00+10 make_timestamptz | 2000-01-01 00:31:00+10 make_timestamptz | 2000-01-01 15:01:00+10 make_timestamptz | 2000-01-01 09:01:00+10 make_timestamptz | 2000-01-01 11:01:00+10 make_timestamptz | 1999-12-31 21:01:00+10
この例では、\x
を使用しました 結果を読みやすくするために、拡張表示(「垂直出力」とも呼ばれます)を有効にします。
\x
と入力します 拡張表示を切り替えます(つまり、有効または無効にします)。
有効なタイムゾーンのリストを取得するには、PostgreSQLでサポートされているタイムゾーンのリストを返すを参照してください。
範囲外
いずれかの引数が日付部分の可能な値の範囲外である場合、「範囲外」エラーが発生します。
SELECT make_timestamptz(1999, 03, 32, 10, 35, 12.15);
結果:
ERROR: date field value out of range: 1999-03-32
この場合、日は32であり、範囲外であるため、メッセージは日付フィールドの値が範囲外であることを説明しました。
時間フィールドの値のみが範囲外の場合、エラーはそれに応じて表現されます。
SELECT make_timestamptz(1999, 03, 30, 10, 61, 12.15);
結果:
ERROR: time field value out of range: 10:61:12.15
この場合、minutes
引数は61で、範囲外です。
タイムゾーンのないタイムスタンプ
タイムゾーンなしでタイムスタンプを作成するには、make_timestamp()
を使用します 機能。