DB/개념정리

[ Oracle ] EXTRACT 함수

Itchild 2024. 4. 10. 22:50
728x90
반응형

 

오라클 EXTRACT 함수는 단어 뜻 그대로 일자정보에서 년도, 월, 일과 같은 특정 내용을 발췌하는 함수입니다. 상단 Syntax에 보면 날짜정보를 가진 expr 에서 년도, 월, 일, 시간, 분, 초 등을 추출해 낼 수 있습니다.

 

YEAR : 년도

MONTH : 월

DAY : 일

HOUR : 시간

MINUTE : 분

SECOND : 초

TIMEZONE_HOUR : TIMEZONE형의 시간

TIMEZONE_MINUTE :TIMEZONE형의 분

TIMEZONE_REGION : TIMEZONE의 지역

TIMEZONE_ABBR : TIMEZONE 지역에 대한 약어

 

여기서 주의할 점은 YEAR, MONTH, DAY 를 추출할 때는 expr에 DATE형이나, TIMESTAMP형등 어떤값이 와도 되지만, HOUR, MINUTE, SECOND 등의 시간정보가 필요할때는 꼭 TIMESTAMP형이 와야된다는 것이다. TIMESTAMP형에는 시간정보가 항상 있지만, DATE형에는 시간정보가 없을 수도 있어서 ! 그리고

TIMEZONE이 붙은 TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMEZONE_REGION, TIMEZONE_ABBR을 추출하기 위해서는 expr에 TIMESTAMP WITH TIMEZONE 이나 TIMESTAMP WITH LOCAL TIMEZONE

형이 와야된다는 것이다. 이것 역시 TIMEZONE 값을 추출하기 위해서는 TIMEZONE형이 와야된다고 생각하면 된다.

 

■ YEAR 또는 MONTH가 요청되면 expr은 데이터 유형 DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP with LOCAL TIME ZONE 또는 INTERVAL YEAR TO MONTH의 표현식으로 평가되어야 한다.

 

■ DAY가 요청되면 expr은 DATE, TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP with LOCAL TIME ZONE 또는 INTERVAL DAY TO SECOND의 표현식으로 평가되어야한다.

 

■ HOUR, MINUTE 또는 SECOND가 요청되면 expr은 TIMESTAMP, TIMESTAMP WITH TIME ZONE, TIMESTAMP with LOCAL TIME ZONE 또는 INTERVAL DAY TO SECOND의 표현식으로 평가되어야한다.

 

■ TIMEZONE_HOUR, TIMEZONE_MINUTE, TIMEZONE_ABBR, TIMEZONE_REGION 또는 TIMEZONE_OFFSET이 요청되면 expr은 TIME ZONE 또는 TIMESTAMP LOCAL TIME ZONE 유형의 표현식으로 평가되어야한다.

 

EXTRACT 함수는 expr을 ANSI datetime 데이터 형식으로 해석한다. 예를 들어, EXTRACT는 시간요소 없이 DATE를 레거시 Oracle DATE가 아닌 ANSI DATE로 처리한다.

따라서 DATE 값에서 YEAR, MONTH 및 DAY 만 추출 할 수 있다. 마찬가지로 TIMESTAMP WITH TIME ZONE 유형에서만 TIMEZONE_HOUR 및 TIMEZONE_MINUTE를 추출 할 수 있다.

 

 

 

오라클(Oracle)의 EXTRACT() 함수는 내가 지정한 시간 형식을 추출하는 역할 또한 가능하다.

 

//EXTRACT() 함수 사용법

SELECT EXTRACT(YEAR FROM SYSDATE) AS YEAR
       ,EXTRACT(MONTH FROM SYSDATE) AS MONTH
       ,EXTRACT(DAY FROM SYSDATE) AS DAY
FROM DUAL


========================================================

YEAR  2023
MONTH 9
DAY   9
 

 

 

728x90
반응형