Oracle EXTRACT(datetime) Function
Oracle EXTRACT(datetime) is a built-in function that extracts and returns the value of the specified date field from a datetime or interval expression.
Oracle EXTRACT(datetime) Syntax
Here is the syntax of the Oracle EXTRACT(datetime) function:
EXTRACT(field FROM expr)
Parameters
field-
Required. The date-time field to be extracted.
fieldcan be one of the following values:YEARMONTHDAYHOURMINUTESECONDTIMEZONE_HOURTIMEZONE_MINUTETIMEZONE_REGIONTIMEZONE_ABBR
expr-
Required. A datetime or interval expression.
exprcan be any expression that evaluates to a datetime or interval data type compatible with the requested field:-
If
YEARorMONTHis requested,exprmust evaluate to an expression of data typeDATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE, orINTERVAL YEAR TO MONTH. -
If
DAYis requested,exprmust evaluate to an expression of data typeDATE,TIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE, orINTERVAL DAY TO SECOND. -
If
HOUR,MINUTE, orSECONDis requested,exprmust evaluate to an expression of data typeTIMESTAMP,TIMESTAMP WITH TIME ZONE,TIMESTAMP WITH LOCAL TIME ZONE, orINTERVAL DAY TO SECOND.DATEis not valid here because Oracle Database considers it an ANSIDATEdata type without time fields. -
If
TIMEZONE_HOUR,TIMEZONE_MINUTE,TIMEZONE_ABBR,TIMEZONE_REGION, orTIMEZONE_OFFSETis requested,exprmust evaluate to an expression of data typeTIMESTAMP WITH TIME ZONEorTIMESTAMP WITH LOCAL TIME ZONE.
-
Return Value
The Oracle EXTRACT(datetime) function returns the value of the specified date field from a datetime or interval expression.
EXTRACT interprets expr as an ANSI datetime data type. For example, EXTRACT does not treat DATE as the legacy Oracle DATE, but as an ANSI DATE without time elements. Therefore, you can extract only YEAR, MONTH, and DAY from a DATE value. Similarly, you can extract only TIMEZONE_HOUR and TIMEZONE_MINUTE from the TIMESTAMP WITH TIME ZONE data type.
Oracle EXTRACT(datetime) Examples
Here are some examples that demonstrate how to use the Oracle EXTRACT(datetime) function.
Basic Usage
To extract the year, month, day, hour, minute, and second separately from 2023-02-11 15:16:17, use the following statement:
SELECT
EXTRACT(YEAR FROM TIMESTAMP '2023-02-11 15:16:17') YEAR,
EXTRACT(MONTH FROM TIMESTAMP '2023-02-11 15:16:17') MONTH,
EXTRACT(DAY FROM TIMESTAMP '2023-02-11 15:16:17') DAY,
EXTRACT(HOUR FROM TIMESTAMP '2023-02-11 15:16:17') HOUR,
EXTRACT(MINUTE FROM TIMESTAMP '2023-02-11 15:16:17') MINUTE,
EXTRACT(SECOND FROM TIMESTAMP '2023-02-11 15:16:17') SECOND
FROM dual;
Output:
YEAR MONTH DAY HOUR MINUTE SECOND
_______ ________ ______ _______ _________ _________
2023 2 11 15 16 17Fractional Seconds
The Oracle EXTRACT(datetime) function allows you to extract the seconds value with fractional seconds, as follows:
SELECT
EXTRACT(SECOND FROM TIMESTAMP '2023-02-11 15:16:17.238000000') SECOND
FROM dual;
Output:
SECOND
_________
17.238Interval
The Oracle EXTRACT(datetime) function allows you to extract fields from an interval value:
SELECT
EXTRACT(YEAR FROM INTERVAL '10-2' YEAR TO MONTH) YEAR,
EXTRACT(MONTH FROM INTERVAL '10-2' YEAR TO MONTH) MONTH
FROM dual;
Output:
YEAR MONTH
_______ ________
10 2Here is another example:
SELECT
EXTRACT(HOUR FROM INTERVAL '11:20' HOUR TO MINUTE) HOUR,
EXTRACT(MINUTE FROM INTERVAL '11:20' HOUR TO MINUTE) MINUTE
FROM dual;
Output:
HOUR MINUTE
_______ _________
11 20Conclusion
The Oracle EXTRACT(datetime) is a built-in function that extracts and returns the value of a specified date field from a datetime or interval expression.