DataBase/Oracle

[ORACLE]날짜에서 특정 값 추출, EXTRACT 함수

DevStory 2021. 5. 20.

EXTRACT Function

EXTRACT(field FROM source)

datetime 또는 interval 표현식에서 년, 월, 일 또는 시간 등 특정 값을 추출하기 위해 사용됩니다.


매개변수

field

- source에서 추출하고자 하는 특정 값입니다.

 

source

- 추출되는 값으로 DATE, INTERVAL, TIMESTAMP의 타입으로 설정합니다.

source의 타입 추출 가능한 값(field)
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

[source에서 추출할 수 있는 field]


특징

  1. 필드의 값이 TIMEZONE_REGION 또는 TIMEZONE_ABBR이 매개변수로 설정되면 VARCHAR2를 반환합니다.
  2. 필드의 값이 YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMEZONE_REGION, TIMEZONE_MINUTE 매개 변수가 설정되면 숫자 값을 반환합니다.
EXTRACT (
{ YEAR | MONTH | DAY | HOUR | MINUTE | SECOND }
| { TIMEZONE_HOUR | TIMEZONE_MINUTE }
| { TIMEZONE_REGION | TIMEZONE_ABBR }
FROM { date_value | interval_value } )

 


Example Data

EX 1) DATE에서 년, 월, 일 추출

SELECT TO_DATE( '2021-MAY-20 15:30:20 ',  'YYYY-MM-DD HH24:MI:SS' ) AS DT     
     , EXTRACT( YEAR FROM TO_DATE( '2021-MAY-20 15:30:20 ',  'YYYY-MM-DD HH24:MI:SS' ) ) AS YEAR
     , EXTRACT( MONTH FROM TO_DATE( '2021-MAY-20 15:30:20 ',  'YYYY-MM-DD HH24:MI:SS' ) ) AS MONTH
     , EXTRACT( DAY FROM TO_DATE( '2021-MAY-20 15:30:20 ',  'YYYY-MM-DD HH24:MI:SS' ) ) AS DAY
FROM DUAL;


EX 2) INTERVAL YEAR TO MONTH에서 년, 월 추출

SELECT EXTRACT( YEAR FROM INTERVAL '5-2' YEAR TO MONTH ) AS INTERVAL_YEAR
     , EXTRACT( MONTH FROM INTERVAL '5-2' YEAR TO MONTH ) AS MONTH
FROM DUAL;


EX 3) INTERVAL DAY TO SECOND에서 일, 시, 분, 초 추출

SELECT EXTRACT( DAY FROM INTERVAL '20 23:05:20.11' DAY TO SECOND ) AS INTERVAL_DAY
     , EXTRACT( HOUR FROM INTERVAL '20 23:05:20.11' DAY TO SECOND ) AS INTERVAL_HOUR
     , EXTRACT( MINUTE FROM INTERVAL '20 23:05:20.11' DAY TO SECOND ) AS INTERVAL_MINUTE
     , EXTRACT( SECOND FROM INTERVAL '20 23:05:20.11' DAY TO SECOND ) AS INTERVAL_SECOND
FROM DUAL;


EX 4) TIMESTAMP에서 년, 월, 일, 시, 분, 초 추출

SELECT EXTRACT( YEAR FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_YEAR
     , EXTRACT( MONTH FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_MONTH
     , EXTRACT( DAY FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_DAY
     , EXTRACT( HOUR FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_HOUR
     , EXTRACT( MINUTE FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_MINUTE
     , EXTRACT( SECOND FROM TIMESTAMP '2021-05-20 23:07:59.10' ) AS TIME_SECOND
FROM DUAL;

 

반응형

댓글