PostgreSQLでは、make_timestamp()
この関数を使用すると、年、月、日、時、分、秒のフィールドからタイムスタンプを作成できます。
構文
この関数の構文は次のとおりです。
make_timestamp(year int, month int, day int, hour int, min int, sec double precision)
year
、month
、およびday
日付の年、月、日を表す整数、およびhour
時間の部分、min
は分の部分であり、sec
秒の部分です。
時間と分は整数として提供されます 、秒は倍精度として提供されます 。
結果はタイムスタンプとして返されます 。より正確には、タイムゾーンのない時間として返されます 。
例
これがデモンストレーションの基本的な例です。
SELECT make_timestamp(2020, 10, 25, 9, 30, 17.12);
結果:
2020-10-25 09:30:17.12
そして、次のクエリで返品タイプを確認できます。
SELECT pg_typeof(make_timestamp(2020, 10, 25, 9, 30, 17.12));
結果:
timestamp without time zone
pg_typeof()
関数は引数のデータ型を返すので、make_timestamp()
を渡しました 引数として..
範囲外
いずれかの引数が日付部分の可能な値の範囲外である場合、「範囲外」エラーが発生します。
SELECT make_timestamp(2020, 13, 25, 9, 30, 17.12);
結果:
ERROR: date field value out of range: 2020-13-25
この場合、月が範囲外であったため、日付フィールドの値が範囲外であることがメッセージに説明されました。
時間フィールドの値のみが範囲外の場合、エラーはそれに応じて表現されます。
SELECT make_timestamp(2020, 10, 25, 25, 30, 17.12);
結果:
ERROR: time field value out of range: 25:30:17.12
引数として文字列を渡す
Postgresのドキュメントには、引数は整数(seconds
引数)ですが、各引数が適切な範囲内にある限り、文字列の受け渡しも機能します(おそらく、暗黙的に整数に変換されるためです)。
SELECT make_timestamp('2020', '12', '25', '10', '30', '17.12');
結果:
2020-12-25 10:30:17.12
ここでも、pg_type()
を使用できます 結果のデータ型を確認します。
SELECT pg_typeof(make_timestamp('2020', '12', '25', '10', '30', '17.12'));
結果:
timestamp without time zone
ただし、整数に変換された後は、各引数が有効であることを確認する必要があります。有効でない場合は、エラーが発生します。
SELECT pg_typeof(make_timestamp('2020', '13', '25', '10', '30', '17.12'));
結果:
ERROR: date field value out of range: 2020-13-25
タイムゾーン付きのタイムスタンプ
タイムゾーン付きのタイムスタンプを作成するには 値、make_timestamptz()
を使用します 機能。