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

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

    PostgreSQLでは、 extract() 関数は、日付/時刻の値から、年、月、時、分などのサブフィールドを取得します。

    date_part()と同等です 構文は少し異なりますが、関数です。

    構文

    構文は次のようになります:

    EXTRACT(field FROM source)

    場所:

    • フィールド isは、ソース値から抽出するフィールドを選択する識別子または文字列です。
    • ソース タイムスタンプです または間隔

    例–タイムスタンプ

    タイムスタンプからフィールドを取得する方法を示す基本的な例を次に示します。 値。

    SELECT extract(hour FROM timestamp '2022-10-30 10:11:35');

    結果:

    10

    この例では、タイムスタンプから時間フィールドを取得します 値。

    前述のように、最初の引数は識別子または文字列にすることができます。これは、 extract()の違いの1つです。 およびdate_part() date_part()を使用する場合 、この引数には文字列を指定する必要があります。

    文字列を除いて、これも同じ例です。

    SELECT extract('hour' FROM timestamp '2022-10-30 10:11:35');

    結果:

    10

    これは同じタイムスタンプの例ですが、今回は年フィールドを取得します。

    SELECT extract(year FROM timestamp '2022-10-30 10:11:35');

    結果:

    2022

    例–間隔

    この例では、間隔から日付部分を取得します 値。

    SELECT extract(hour FROM interval '7 hours 45 minutes');

    結果:

    7

    次の例では、分数しか指定していなくても、関数は時間数を正しく返します。

    SELECT extract(hour FROM interval '120 minutes');

    結果:

    2

    ただし、この手法を当てにしないでください。期待どおりの結果が得られるとは限らない場合があります。

    例:

    SELECT extract(hour FROM interval '100 minutes');

    結果:

    1

    そしてもう1つ:

    SELECT extract(minute FROM interval '2 hours');

    結果:

    0

    フィールド名

    最初の引数は次のいずれかになります:

    • 世紀
    • 10年
    • ダウ
    • doy
    • エポック
    • 時間
    • isodow
    • isoyear
    • マイクロ秒
    • ミレニアム
    • ミリ秒
    • 四半期
    • タイムゾーン
    • timezone_hour
    • timezone_minute

    これらは、 date_part()の有効な値と同じです。 機能。


    1. MySQL-郵便番号を0でフロントパッドする方法は?

    2. 重複キーで無視しますか?

    3. エスケープされたUnicode文字をPostgreSQLで実際の文字に変換します

    4. SUMによるMySQLグループ