[Oracle] 오라클 TO_DATE() 함수 사용법, 문자열 날짜 변환하는 법
- 데이터베이스/[Oracle]
- 2023. 10. 12.
TO_DATE() 함수
TO_DATE() 함수는 문자열 데이터를 일정 포맷의 날짜 타입으로 변환하는 함수이다.
예를 들어 아래와 같이 문자열을 날짜 타입으로 바꿀수 있다.
SELECT TO_DATE('2023-10-12', 'YYYY-MM-DD')
FROM DUAL;
아래 표에 나온 것처럼 특정 문자열을 날짜 타입으로 변환할 수 있다. 이때 문자열과 날짜 타입의 포맷이 일치해야 한다.
포맷 | 설명 |
YYYY/YY/YEAR | 년도(4자)/년도(뒤 2자)/문자년도 |
MONTH/MON/MM/RM | 달(이름/약어/숫자/로마 기호) |
DDD/DD/D | 일(1년 기준/1달 기준/1주 기준) |
DAY/DY | 요일(이름/약어) |
HH/HH24 | 12시간/24시간 표준 |
MI | 분(0~59) |
SS | 초(0~59) |
예시
SELECT TO_DATE('2023-10-12', 'YYYYMMDD') // 오류 발생
FROM DUAL;
위 예시를 보면 문자열과 날짜 타입의 포맷이 일치하지 않는다.
따라서 ORA-01843 에러가 발생한다.
SELECT TO_DATE('2023-10-12', 'YYYY-MM-DD')
FROM DUAL;
위와 같이 변환해야 정상적으로 동작한다.
응용
SELECT *
FROM HR.EMPLOYEES
WHERE HIRE_DATE >= TO_DATE('2008-01-01', 'YYYY-MM-DD') -- 2008년 이후 입사자
TO_DATE 함수는 주로 DATE 칼럼과의 비교를 위해 사용하는 경우가 많다.
위 쿼리를 실행하면 아래와 같이 결과가 잘 나온다.
SELECT *
FROM HR.EMPLOYEES
WHERE HIRE_DATE >= '2008-01-01'
만약 DATE 칼럼을 일반 문자열과 비교하면 어떻게 될까?
DATE 칼럼과 문자열을 비교하면 위와 같이 ORA-01861 오류가 발생한다.
데이터 타입이 맞지 않기 때문에 발생하는 문제이다.
따라서 DATE 칼럼을 비교하기 위해서는 TO_DATE() 함수를 사용해야한다.
SELECT *
FROM HR.EMPLOYEES
WHERE TO_CHAR(HIRE_DATE, 'YYYY-MM-DD') >= '2008-01-01'
물론 DATE 칼럼을 TO_CHAR() 함수를 사용해서 비교해도 결과는 아래와 같다.
하지만 위와 같이 칼럼을 가공하는 것은 성능상 좋지 않다.
그 이유가 궁금하다면 다음 글을 참고하자.
반응형
'데이터베이스 > [Oracle]' 카테고리의 다른 글
[Oracle] 오라클 CASE WHEN 문 사용법, CASE WHEN 다중 조건, 중첩문 (0) | 2024.02.19 |
---|---|
[Oracle] 오라클 LOB 타입이란? 오라클 CLOB 데이터 조회하는 법, DBMS_LOB 사용법 (0) | 2024.02.02 |
[Oracle] 오라클 TO_CHAR() 함수 사용법 (0) | 2023.10.10 |
[Oracle] 오라클 SYSDATE 사용법(날짜 빼기 더하기 계산법 등) (0) | 2023.10.04 |
[Oracle] 오라클 DECODE 함수 사용법 (0) | 2023.08.21 |