sql >> データベース >  >> RDS >> PostgreSQL

make_timestamp()がPostgreSQLでどのように機能するか

    PostgreSQLでは、make_timestamp() この関数を使用すると、年、月、日、時、分、秒のフィールドからタイムスタンプを作成できます。

    構文

    この関数の構文は次のとおりです。

    make_timestamp(year int, month int, day int, hour int, min int, sec double precision)

    yearmonth 、および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()を使用します 機能。


    1. Oracleで一括収集して即時実行

    2. MySQLWorkbenchを使用してクエリの結果をエクスポートする方法

    3. SQLiteサンプルデータベース

    4. OracleWHILELOOPの例