사용 프로그램 & 버젼 등 환경
Oracle 11g
프로그래머스
메세지
ORA-30076: invalid extract field for extract source
상황
프로그래머스 입양 시각 구하기(1) 풀이 중 EXTRACT로 HOUR를 추출할려고 써보는데 해당 에러 발생
SELECT EXTRACT(HOUR FROM DATETIME)
FROM ANIMAL_OUTS
원인
데이터타입이 안맞아서 나는 오류
EXTRACT 함수를 사용할때, 2가지 데이터타입을 받을 수 있는데 하나는 DATE 다른 하나는 TIMESTAMP
1)DATE(DATETIME) : YEAR, MONTH, DAY
2)TIMESTAMP : HOUR, MINUTE, SECOND 등등
※DATETIME 데이터타입
DATE + TIMESTAMP = DATETIME
DATETIME 자체가 DATE 타입과 TIMESTAMP을 합쳐 놓은 데이터타입
SELECT SYSDATE,
SYSTIMESTAMP,
EXTRACT (YEAR FROM SYSDATE),
EXTRACT (MONTH FROM SYSDATE),
EXTRACT (DAY FROM SYSDATE),
EXTRACT (HOUR FROM SYSTIMESTAMP),
EXTRACT (MINUTE FROM SYSTIMESTAMP),
EXTRACT (SECOND FROM SYSTIMESTAMP)
FROM DUAL
해결
CAST()로 TIMESTAMP형으로 파싱해주면 된다
SELECT EXTRACT(HOUR FROM CAST(DATETIME AS TIMESTAMP)) HOUR
FROM ANIMAL_OUTS