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()を使用します 機能。