오류 해결

[Oracle / 오류] ORA-01861: literal does not match format string

cob 2023. 9. 7. 10:00
Oracle 데이터베이스에서 날짜 또는 시간 값을 올바른 형식으로 변환하지 못할 때 발생한다. Oracle 버전과 설정에 따라 오류가 발생하지 않을 수도 있다.

 

 

1. 발생 원인

1-1) 기본 형식

데이터베이스 설정에 따라 TO_DATE 함수는 기본 날짜 또는 시간 형식을 사용하게 된다. 로컬 개발 환경에서는 오류가 발생하지 않을 수 있지만, 서버 환경에서는 기본 형식이 다르거나 지정되지 않았을 경우 오류가 발생할 수 있다. 

 

1-2) 버전

버전에 따라 TO_DATE 함수 동작이 다를 수 있다. 특정 버전에서는 형식을 지정하지 않아도 기본 형식을 인식할 수 있을 수도 있고, 다른 버전에서는 반드시 형식을 지정해야 할 수도 있다.

 

 


2. 해결 방법

1. 날짜 형식이 없을 경우

-- 날짜 형식  미지정
SELECT TO_DATE('2023-09-07') FROM dual;

-- 날짜 형식 'YYYY-MM-DD'로 지정
SELECT TO_DATE('2023-09-07', 'YYYY-MM-DD') FROM dual;

 

2. 날짜 형식이 일치하지 않는 경우

-- 날짜 형식 불일치
SELECT TO_DATE('2023-09-07', 'YYYY/MM/DD') FROM dual;

-- 형식 문자열을 'YYYY-MM-DD'로 수정
SELECT TO_DATE('2023-09-07', 'YYYY-MM-DD') FROM dual;

 

3. 형식 문자열에서 잘못된 형식 지정자 사용

-- 잘못된 형식 지정자 사용
SELECT TO_DATE('09', 'MM') FROM dual;

-- 형식 문자열을 'MM'로 수정
SELECT TO_DATE('09', 'MM') FROM dual;

 

4. 날짜 또는 시간 값이 유효하지 않은 경우

-- 유효하지 않은 날짜 값
SELECT TO_DATE('2023-13-07', 'YYYY-MM-DD') FROM dual;

-- 유효한 날짜 값으로 수정
SELECT TO_DATE('2023-01-07', 'YYYY-MM-DD') FROM dual;
반응형