Oracle EXTRACT Function Demonstrated With Practical Examples
The Oracle EXTRACT() function extracts a specific component (year, month, day, hour, minute, second, etc.,) from a datetime or an interval value.
Syntax #
The following illustrates the syntax of the Oracle EXTRACT() function:
EXTRACT(field FROM source) Code language: SQL (Structured Query Language) (sql)
Arguments #
The Oracle EXTRACT() function accepts two arguments:
1) field
The field argument specifies the component to be extracted.
2) source
The source argument is a DATE, an INTERVAL, or a TIMESTAMP value from which a field is extracted.
The following table illustrates which fields you can extract from which value type.
| Value Type | Available Fields |
|---|---|
| DATE | YEAR, MONTH, DAY |
| INTERVAL YEAR TO MONTH | YEAR, MONTH |
| INTERVAL DAY TO SECOND | DAY, HOUR, MINUTE, SECOND |
| TIMESTAMP | YEAR, MONTH, DAY, HOUR, MINUTE, SECOND |
Note that the EXTRACT() function will return UNKNOWN if the combination of field and source result in ambiguity.
Return value #
The EXTRACT() function returns the value of the field of the source.
Examples #
A) Extracting fields from DATE values #
You can extract YEAR, MONTH, and DAY from a DATE value by using the EXTRACT() function.
The following example extracts the value of the YEAR field from a DATE value.
SELECT EXTRACT( YEAR FROM TO_DATE( '31-Dec-1999 15:30:20 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) YEAR FROM DUAL;Code language: SQL (Structured Query Language) (sql)In this example, we used the TO_DATE() function to convert a date literal to a DATE value.
Here is the result:
1999Code language: SQL (Structured Query Language) (sql)Similarly, you can extract the values of other fields as shown below:
Extracting month from a date:
SELECT EXTRACT( MONTH FROM TO_DATE( '31-Dec-1999 15:30:20 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) MONTH FROM DUAL; Code language: SQL (Structured Query Language) (sql)Result
12 Code language: SQL (Structured Query Language) (sql)Extracting day from a date:
SELECT EXTRACT( DAY FROM TO_DATE( '31-Dec-1999 15:30:20 ', 'DD-Mon-YYYY HH24:MI:SS' ) ) DAY FROM DUAL;Code language: SQL (Structured Query Language) (sql)Result
31 Code language: SQL (Structured Query Language) (sql)To extract values of HOUR, MINUTE, and SECOND fields, you use TO_CHAR() function.
For example, to extract the hour, minute, and second of a current system date, you use the following statement:
SELECT TO_CHAR( SYSDATE, 'HH24' ) hour, TO_CHAR( SYSDATE, 'MI' ) minute, TO_CHAR( SYSDATE, 'SS' ) second FROM DUAL; Code language: SQL (Structured Query Language) (sql)B) Extracting fields from INTERVAL YEAR TO MONTH values #
For the INTERVAL YEAR TO MONTH, you can extract only the YEAR and MONTH fields.
Suppose you have the following interval:
INTERVAL '5-2' YEAR TO MONTHCode language: SQL (Structured Query Language) (sql)It is 5 years and 2 months.
To extract the value of the year field, you use the following statement:
SELECT EXTRACT( YEAR FROM INTERVAL '5-2' YEAR TO MONTH ) FROM DUAL;Code language: SQL (Structured Query Language) (sql)The result is
5Code language: SQL (Structured Query Language) (sql)The following example extracts the value of the month field from the interval:
SELECT EXTRACT( MONTH FROM INTERVAL '5-2' YEAR TO MONTH ) FROM DUAL;Code language: SQL (Structured Query Language) (sql)Here is the result:
2 Code language: SQL (Structured Query Language) (sql)C) Extracting fields from INTERVAL DAY TO SECOND values #
For an INTERVAL DAY TO SECOND, you can extract DAY, HOUR, MINUTE, and SECOND, as shown in the following example:
Extract day from an interval
SELECT EXTRACT( DAY FROM INTERVAL '5 04:30:20.11' DAY TO SECOND ) FROM dual;Code language: SQL (Structured Query Language) (sql)Result:
5 Code language: SQL (Structured Query Language) (sql)Extract hours from an interval
SELECT EXTRACT( HOUR FROM INTERVAL '5 04:30:20.11' DAY TO SECOND ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result:
4 Code language: SQL (Structured Query Language) (sql)Extract minutes from an interval
SELECT EXTRACT( MINUTE FROM INTERVAL '5 04:30:20.11' DAY TO SECOND ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result:
30 Code language: SQL (Structured Query Language) (sql)Extract seconds from an interval
SELECT EXTRACT( SECOND FROM INTERVAL '5 04:30:20.11' DAY TO SECOND ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result:
20.11 Code language: SQL (Structured Query Language) (sql)D) Extracting fields from TIMESTAMP values #
You can extract YEAR, MONTH, DAY, HOUR, MINUTE, and SECOND from a TIMESTAMP value as shown in the following examples:
Extracting years from a timestamp:
SELECT EXTRACT( YEAR FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result
1999 Code language: SQL (Structured Query Language) (sql)Extracting months from a timestamp:
SELECT EXTRACT( MONTH FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result
12Code language: SQL (Structured Query Language) (sql)Extracting day from a timestamp:
SELECT EXTRACT( DAY FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result
31 Code language: SQL (Structured Query Language) (sql)Extracting hours from a timestamp:
SELECT EXTRACT( HOUR FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual;Code language: SQL (Structured Query Language) (sql)Result
23Code language: SQL (Structured Query Language) (sql)Extracting minutes from a timestamp:
SELECT EXTRACT( MINUTE FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result
59 Code language: SQL (Structured Query Language) (sql)Extracting seconds from a timestamp:
SELECT EXTRACT( SECOND FROM TIMESTAMP '1999-12-31 23:59:59.10' ) FROM dual; Code language: SQL (Structured Query Language) (sql)Result
59.10 Code language: SQL (Structured Query Language) (sql)E) Extracting date components from table data #
See the following orders table from the sample database:

The following statement uses the EXTRACT() function to extract the year and month from the order date and return the number of orders per month:
SELECT EXTRACT(year FROM order_date) year, EXTRACT(month FROM order_date) month, COUNT(order_id) order_count FROM orders GROUP BY EXTRACT(YEAR FROM order_date), EXTRACT(MONTH FROM order_date) ORDER BY year DESC, month;Code language: SQL (Structured Query Language) (sql)Result

F) Extracting date from user input #
The following statement attempts to extract the year, month, and day from a date that the user inputs:
SELECT EXTRACT(YEAR FROM :input_date) year, EXTRACT(MONTH FROM :input_date) month, EXTRACT(DAY FROM :input_date) day FROM dual;Code language: SQL (Structured Query Language) (sql)However, Oracle issued an error:
ORA-30076: invalid extract field for extract sourceTo fix this error, you need to convert the input date to a date value using the TO_DATE function. Suppose that the format of the input date is YYYYMMDD:
SELECT EXTRACT(YEAR FROM TO_DATE(:input_date,'yyyymmdd')) year, EXTRACT(MONTH FROM TO_DATE(:input_date,'yyyymmdd')) month, EXTRACT(DAY FROM TO_DATE(:input_date,'yyyymmdd')) day FROM dual;Code language: SQL (Structured Query Language) (sql)And when you enter the input date as 20191126, the output is as follows:

In this tutorial, you have learned how to use the Oracle EXTRACT() function to extract the value of a specified field of a date-time value.
Send CancelTừ khóa » Hàm Lấy Year Trong Oracle
-
EXTRACT (datetime)
-
Hàm EXTRACT – Oracle/PLSQL | Học Toàn Tập
-
Trích Xuất Tháng Và Năm Từ Ngày Trong Oracle - HelpEx
-
Hàm Hàm TO_DATE Trong Oracle - Freetuts
-
Tổng Hợp 30 Câu Truy Vấn Hữu ích Trong Oracle - Vi
-
Hàm YEAR() Trong SQL - Học Sql Cơ Bản đến Nâng Cao - VietTuts
-
YEAR - Hàm Lấy Năm - SQL & Database
-
Một Số Câu Query Hữu ích Trong Oracle (1) | Black Jack
-
45 Câu Truy Vấn Oracle Rất Hữu Ích - Mofun IT
-
Oracle So Sánh Thời Gian Ngày Tháng - Review Game Mobile Hot
-
Tính Toán Và Xử Lí Ngày Tháng Bằng Câu Lệnh SQL - Viblo
-
Hàm Xử Lý DATE/TIME Trong SQL - Phần 1
-
Hàm Hàm TO_DATE Trong Oracle - TRẦN VĂN BÌNH MASTER