2016년 6월 2일

ORA-01861: literal does not match format string

서버 환경 :
Oracle 11.2.0.1.0
Apache Tomcat 7.0.52 ( Oracle Java 1.7.0_60-b19)
OS : Linux ( 2.6.32-431.el6.x86_64 )

클라이언트 환경 :
SqlDeveloper  4.1.1.19  ( Java  1.8.0_45 )

현상 : SqlDeveloper 에서는 정상적으로 수행되는 쿼리가 웹 프로그램에서 실행하는 경우

ORA-01861: literal does not match format string

오류가 발생.

    SELECT TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D'), 'YYYY-MM-DD')) wsday
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D'), 'DY'))       ws
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D')+6, 'YYYY-MM-DD')) weday
     , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602'), 'D')+6, 'DY'))       we
    FROM   DUAL ;

해결방법 : 문자열을 날짜 형태로 변환하는 경우 명시적으로 포맷 문자값을 지정하여 처리한다.

 SELECT TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D'), 'YYYY-MM-DD')) wsday
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D'), 'DY'))       ws
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D')+6, 'YYYY-MM-DD')) weday
    , TO_CHAR(TO_CHAR(TRUNC(to_date('20160602', 'YYYYMMDD'), 'D')+6, 'DY'))       we
 FROM   DUAL ;




댓글 없음:

댓글 쓰기