説明
この関数は、指定された日付時刻フィールドまたは式から、年、月、日、時、分、秒、タイムゾーンなどの要素を抽出します。
構文
EXTRACT ({ YEAR
| MONTH
| DAY
| HOUR
| MINUTE
| SECOND
| TIMEZONE_HOUR
| TIMEZONE_MINUTE
| TIMEZONE_REGION
| TIMEZONE_ABBR
}
FROM datetime)
パラメータの説明
パラメータ |
説明 |
|---|---|
| YEAR | 抽出する年を指定します。 |
| MONTH | 抽出する月を指定します。 |
| DAY | 抽出する日を指定します。 |
| HOUR | 抽出する時を指定します。 |
| MINUTE | 抽出する分を指定します。 |
| SECOND | 抽出する秒数を指定します。 |
| TIMEZONE_HOUR | タイムゾーンの時を抽出します。 |
| TIMEZONE_MINUTE | タイムゾーンの分を抽出します。 |
| TIMEZONE_REGION | 戻り値として返すタイムゾーンのリージョン名を指定します。 説明 時間式にタイムゾーンの数値オフセットが指定されており、その数値オフセットが複数のタイムゾーンのリージョン名にマッピングされる可能性がある場合、 UNKNOWN を返します。 |
| TIMEZONE_ABBR | 戻り値として返すタイムゾーンのリージョン名の略称を指定します。 説明 時間式にタイムゾーンの数値オフセットが指定されており、その数値オフセットが複数のタイムゾーンのリージョン名にマッピングされる可能性がある場合、 UNK を返します。 |
| datetime | DATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、INTERVAL YEAR TO MONTH、INTERVAL DAY TO SECOND などのデータ型の値。 |
説明
YEARまたはMONTHの抽出を指定した場合、datetimeのデータ型はDATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、またはINTERVAL YEAR TO MONTHである必要があります。DAYの抽出を指定した場合、datetimeのデータ型はDATE、TIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、またはINTERVAL DAY TO SECONDである必要があります。HOUR、MINUTE、またはSECONDの抽出を指定した場合、datetimeのデータ型はTIMESTAMP、TIMESTAMP WITH TIME ZONE、TIMESTAMP WITH LOCAL TIME ZONE、INTERVAL DAY TO SECONDである必要があります。TIMEZONE_HOUR、TIMEZONE_MINUTE、TIMEZONE_ABBR、またはTIMEZONE_REGIONの抽出を指定した場合、datetimeのデータ型はTIMESTAMP WITH TIME ZONEまたはTIMESTAMP WITH LOCAL TIME ZONEである必要があります。
戻り値の型
TIMEZONE_REGION、TIMEZONE_ABBRの要素を抽出する場合、戻り値のデータ型はVARCHAR2です。その他の要素を抽出する場合、戻り値のデータ型は
NUMBERです。
例
以下のステートメントを実行します:
obclient> SELECT EXTRACT(HOUR FROM TIMESTAMP '2021-11-17 12:38:40') "HOUR",
EXTRACT(MINUTE FROM TIMESTAMP '2021-11-17 12:38:40') "MINUTE",
EXTRACT(SECOND FROM TIMESTAMP '2021-11-17 12:38:40') "SECOND",
EXTRACT(DAY FROM TIMESTAMP '2021-11-17 12:38:40') "DAY",
EXTRACT(MONTH FROM TIMESTAMP '2021-11-17 12:38:40') "MONTH",
EXTRACT(YEAR FROM TIMESTAMP '2021-11-17 12:38:40') "YEAR",
EXTRACT(TIMEZONE_HOUR FROM TIMESTAMP '2021-11-17 12:38:40 +08:00') "TIMEZONE_HOUR",
EXTRACT(TIMEZONE_REGION FROM TIMESTAMP '2021-11-17 12:38:40 +08:00') "TIMEZONE_REGION",
EXTRACT(TIMEZONE_ABBR FROM TIMESTAMP '2021-11-17 12:38:40 +08:00') "TIMEZONE_ABBR"
FROM DUAL;
+------+--------+--------+------+-------+------+---------------+-----------------+---------------+
| HOUR | MINUTE | SECOND | DAY | MONTH | YEAR | TIMEZONE_HOUR | TIMEZONE_REGION | TIMEZONE_ABBR |
+------+--------+--------+------+-------+------+---------------+-----------------+---------------+
| 12 | 38 | 40 | 17 | 11 | 2021 | 8 | UNKNOWN | UNK |
+------+--------+--------+------+-------+------+---------------+-----------------+---------------+
1 row in set