선 조치 후 분석

ORA-01861 : literal does not match format string 본문

ETC/Error

ORA-01861 : literal does not match format string

JB1104 2022. 10. 7. 11:22
728x90
반응형
SMALL

운영서버에 올리고 나면 한 번쯤은 겪는 문제라고 생각하는 에러다.

 

원인 : TO_DATE || TO_CHAR의 함수에 날짜 형식을 잘못 입력하거나, 입력하지 않았을 때 발생

 

DATE -> TO_CAHR 일 때, 표현하고자 하는 Format을 지정해줘야 한다.

VARCHAR -> TO_DATE  일 때, 꼭 현 VARCHAR 형식의 Format을 지정해주고 DATE로 변경해야 한다.

 

아래는 필자가 작성한 코드다. 아래의 코드로 설명하면 이렇다.

CASE
    WHEN CO.MODIFIED_DT <![CDATA[ IS NOT NULL ]]> THEN TO_CHAR(CO.MODIFIED_DT, 'YYYY.MM.DD')
    WHEN CO.MODIFIED_DT <![CDATA[ IS NULL ]]> THEN TO_CHAR(TO_DATE(MC.END_DT, 'YYYY.MM.DD'), 'YYYY.MM.DD')
    ELSE ''
END AS MOD_DATE

CO.MODIFIED_DT 타입

 

MC.END_DT 타입

 

MODIFIED_DT 타입은 'DATE"이고, END_DT 타입은 VARHCAR 인 것을 확인할 수 있다.

 

DATE타입에서 TO_CHAR로 변환할 때는, 표현하고자 하는 Format('YYYY.MM.DD')만 작성해주고,

VARCHAR에서 TO_DATE로 변환할대는, 현재 VARCHAR의 Format('YYYY.MM.DD')을 꼭 작성해줘야 한다.

728x90
반응형
LIST