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

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

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

 

아래의 예제를 보면 쉽게 이해할 수 있다.

 

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

 

 

오라클에서는 날짜 포맷의 대소문자를 구분하지 않는다.

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

날짜의 시간이 12시간 단위면 hh24:mi:ss → hh:mi:ss로 변경하면 된다. 

 

SELECT TO_DATE('20211212', 'YYYYMMDD')
     , TO_DATE('20211212171000', 'YYYYMMDDHH24MISS')
  FROM dual

 

 

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

 

SELECT TO_DATE('2021/12/12', 'YYYY/MM/DD')
     , TO_DATE('12/12/2021', 'MM/DD/YYYY')
  FROM dual

 

 

년/월/일의 위치를 변경하여 포맷을 정의할 수 있다.

 

SELECT TO_DATE('19/12/11', 'RR/MM/DD')
     , TO_DATE('21/12/12', 'RR/MM/DD')
  FROM dual

 

 

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

 

SELECT TO_DATE('2021-12-12') 
  FROM dual

 

 

TO_DATE 함수를 사용할 때 날짜 포맷 없이 사용할 수 있다. (날짜 포맷을 지정할 것을 권장)

그러나 시스템의 설정된 날짜 형식과 일치하지 않은 문자열 값인 경우 오류가 발생할 수 있으니 주의해야 한다.

ORA-01861: literal does not match format string (리터럴이 형식 문자열과 일치하지 않음)

 

 

SELECT * 
  FROM nls_session_parameters
 WHERE parameter = 'NLS_DATE_FORMAT'

 

 

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

 

 

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

 

[Oracle] 오라클 문자열 날짜 형식 체크 방법 (IsDate)

오라클에서 문자열의 날짜를 TO_DATE 함수를 사용하여 날짜 형식으로 변경할 때 형식이 맞지 않으면 "ORA-01839: 지정된 월에 대한 날짜가 부적합합니다" 라는 오류가 발생한다. 문자열을 날짜 형식

gent.tistory.com

 

댓글

Designed by JB FACTORY