Database/Oracle

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

  • -
반응형

로컬에서 잘 되던 코드를 스테이징 서버에 올리자 발생한 오류입니다.

로그를 확인해보니 아래와 같은 내용을 확인할 수 있었습니다.

ORA-01861: literal does not match format string

 

문제가 된 쿼리는 아래와 같습니다.

req_date는 VARCHAR2(8) 타입으로 선언됐습니다. 이 값을 DATE 형태로 변환 후 'YYYY-MM-DD' 형태로 포맷하는 부분이 원인이었습니다.

SELECT i1.seq
     , i1.proc_type
     , i1.req_content
     , i1.req_user_name
     , TO_CHAR(TO_DATE(i1.req_date), 'YYYY-MM-DD') AS req_date   
 FROM MY_TABLE i1
WGERE ...

 

TO_DATE 시 날짜 지정 포맷이 환경에 따라 다른값이 지정됩니다. 'YYYY-MM-DD' 또는 'YY-MM-DD'  또는 다른 값으로 설정될 수 있습니다.

이에 TO_DATE, TO_CHAR 사용시에는 데이터 형식을 지정하는 것이 좋습니다.

수정된 쿼리는 다음과 같습니다.

SELECT i1.seq
     , i1.proc_type
     , i1.req_content
     , i1.req_user_name
     , TO_CHAR(TO_DATE(i1.req_date, 'YYYY-MM-DD'), 'YYYY-MM-DD') AS req_date   
 FROM MY_TABLE i1
WGERE ...

 

서버 환경의 DATE_FORMAT이 어떻게 되어있는지 확인하는 방법은 다음과 같습니다.

SELECT VALUE 
  FROM v$nls_session_parameters 
 WHERE PARAMETER LIKE '%DATE%'

 

 

참고문서
 

개발자 환장하는 "ORA-01861: literal does not match format string"

  개발자가 가장 미치는 상황중 하나는   내꺼에선 잘되는데 서버에 올리는 포팅만 하면 안되는 ...

blog.naver.com

반응형

'Database > Oracle' 카테고리의 다른 글

[Oracle]UPDATE JOIN 사용하기  (0) 2024.10.30
[Oracle]날짜 영문 표기  (0) 2021.01.14
[Oracle]계층형 쿼리(START WITH ~ CONNECT BY PRIOR)  (0) 2019.11.21
[Oracle]LAG, LEAD  (0) 2019.03.14
[Oracle]공백 제거  (0) 2018.09.28
Contents

포스팅 주소를 복사했습니다.

이 글이 도움이 되었다면 공감 부탁드립니다.