Oracle Databaseでは、EXTRACT(datetime) 関数は、日時式または間隔式から指定された日時フィールドの値を抽出して返します。
構文
構文は次のようになります:
EXTRACT( { YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM { expr }
)
exprの場所 は、要求されたフィールドと互換性のある日時または間隔のデータ型に評価される式です。
expr 引数はANSI日時データ型として扱われます。
例1
関数を示す例を次に示します。
SELECT EXTRACT(YEAR FROM DATE '2027-10-03')
FROM DUAL; 結果:
2027
例2
TIMESTAMPから秒とマイクロ秒を抽出する例を次に示します。 値:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2027-10-15 23:10:57.98321 +04:00') AS Result
FROM DUAL; 結果:
57.98321
間隔
間隔リテラルから年を抽出する例を次に示します。
SELECT EXTRACT(YEAR FROM INTERVAL '25-3' YEAR TO MONTH)
FROM DUAL; 結果:
25
間違ったフィールドを抽出しようとしています
指定された値に存在しないフィールドを抽出しようとすると、次のようになります。
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL; 結果:
Error starting at line : 1 in command -
SELECT
EXTRACT(SECOND FROM DATE '2027-10-15') AS Result
FROM DUAL
Error at Command Line : 2 Column : 25
Error report -
SQL Error: ORA-30076: invalid extract field for extract source
30076. 00000 - "invalid extract field for extract source"
*Cause: The extract source does not contain the specified extract field.
*Action: すべてのデータ型からすべての日付部分を抽出できるわけではありません。特定のデータ型ごとに受け入れられる日付部分については、Oracleのドキュメントを参照してください。