본문 바로가기

Oracle

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

ORA-01861: 리터럴이 형식 문자열과 일치하지 않음 

ORA-01861: literal does not match format string 

 

TO_DATE와 TO_CHAR 함수사용시 날짜형식을 지정하지 않았을 때 기본값으로 지정되는 형식이 달라서 그렇다.

운영DB와 개발DB NLS_DATE_FORMAT 설정값이 달라서 에러가 발생했던거 같은데,

DB설정은 어떻게 바꾸는지는 모르겠고 쿼리 작성시에 포멧을 적어주도록 조치했다.

(DBA 한테 요청..ㅎ)

 

SQL Developer 나 DB tool을 사용하여 쿼리를 호출할땐 정상적으로 출력되서 미쳐버리게 된다....

 

 

* 오류 발생할 수 있는 예시

 

SELECT TO_DATE('2023-11-30', 'MM/DD/YYYY') FROM DUAL;

 

DATE 타입의 컬럼 : INS_DT 이 있다고 가정하면, 아래와 같이 사용시 에러가 발생한다.

SELECT TO_CHAR(INS_DT) FROM BOARD;

 

* 해결방법

- Date형을 문자형으로 변환할때

SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL;

 

- 문자형을 Date형으로 변환할때

 

SELECT TO_DATE('20231130', 'YYYYMMDD') FROM DUAL;

 

- TO_DATE 함수 사용시 날짜 문자열과 형식이 호환되는지 확인!!

SELECT TO_DATE('2023-11-30', 'YYYY-MM-DD') FROM DUAL;

 

-> 그냥 TO_CHAR, TO_DATE 사용할때는 포멧을 꼭 적어주는 습관을 들이도록 하자!!

반응형