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 사용할때는 포멧을 꼭 적어주는 습관을 들이도록 하자!!
반응형
'Oracle' 카테고리의 다른 글
Oracle 행열 변환(DECODE 사용) (0) | 2022.12.18 |
---|---|
Oracle - 테이블 코멘트 조회 (0) | 2021.12.30 |
Oracle RAC Jdbc Connection String 설정 (0) | 2021.10.18 |
Oracle 주말 공휴일 제외 평일 구하기(WORKING DAY) (0) | 2020.10.11 |
Oracle SCOTT 계정 활성화 하기 (0) | 2020.10.10 |