본문 바로가기
DB/Oracle

[Oracle] 오라클 문자를 날짜로 변환 / TO_DATE

by 키튼햄 2023. 10. 11.

오라클에서 문자열을 날짜형 데이터로 형변환을 하기위해서는 TO_DATE 함수를 사용하면된다.

 

형식)  TO_DATE("문자열", "날짜포맷")

 

 

1.오라클에서는 날짜 포맷의 대소문자를 구분하지 않는다. (사실 문자열의 대소문자도 구분하지 않는건 마찬가지지만...)

따라서

'YYYY-MM-DD HH24:MI:SS'  'yyyy-mm-dd hh24:mi:ss' 로 변경해도 정상적으로 작동한다.

이때 날짜의 시간을 24시간이 아닌 12시간 단위로 하고 싶다면,

hh24:mi:ss → hh:mi:ss 로 변경하면 된다.

SELECT TO_DATE('2023-10-10', 'YYYY-MM-DD')
     , TO_DATE('2023-10-10 17:10:00', 'YYYY-MM-DD HH24:MI:SS')
  FROM dual

 

2.

날짜의 구분자를 사용할 수도 사용하지 않을 수도 있다.

SELECT TO_DATE('20231010', 'YYYYMMDD')
     , TO_DATE('20231010171000', 'YYYYMMDDHH24MISS')
  FROM dual

 

3.

년/월/일의 위치를 일/월/년 으로 변경하여 사용할 수 있다.

SELECT TO_DATE('2023/10/10', 'YYYY/MM/DD')
     , TO_DATE('10/10/2023', 'MM/DD/YYYY')
  FROM dual

 

 

4. 

년도(YYYY)의 포맷을 RR로 사용할 경우 50~99년은 1900년대로, 00~49년은 2000년대로 변환된다.

SELECT TO_DATE('99/10/10', 'RR/MM/DD')
     , TO_DATE('22/10/10', 'RR/MM/DD')
  FROM dual

 

 

5.

TO_DATE 함수를 사용할 때 날짜 포맷 없이 사용할 수 있다. 

(하지만 오류가 발생할 수도 있으니 날짜 포맷을 지정할 것을 권장한다.)

발생가능한 오류 => ORA-01861: literal does not match format string (리터럴이 형식 문자열과 일치하지 않음)

SELECT TO_DATE('2023-10-10') 
  FROM dual

 

=> 오류가 발생하지 않으려면, 리터럴이 형식 문자열과 일치하면 되는데,

이것은 시스템의 NLS_DATE_FORMAT이 어떻게 설정되어 있는지 확인 후 동일한 형식으로 문자열을 입력하면 오류가 발생하지 않는다.

날짜 문자열이 아닌 값이 존재할 경우 문자열의 날짜 형식을 미리 체크한 후 변환을 해야 오류를 방지할 수 있다.

 

 

 

 


참고 블로그

https://gent.tistory.com/448

 

[Oracle] 오라클 문자를 날짜로 변환 방법 (TO_DATE)

오라클에서 문자열을 날짜형 데이터로 형 변환을 하기 위해서는 TO_DATE 함수를 사용하면 된다. TO_DATE("문자열", "날짜 포맷") 아래의 예제를 보면 쉽게 이해할 수 있다. SELECT TO_DATE('2021-12-12', 'YYYY-MM

gent.tistory.com