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()
の有効な値と同じです。 機能。