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のドキュメントを参照してください。