제가 쿼리중에서의 select문중에서
, CASE WHEN MOD( TO_CHAR( SYSDATE , 'YYYY'), 4) <> 0 AND TO_CHAR(BIRTH_DATE , 'MMDD') = '0229'
THEN TO_DATE( TO_CHAR( SYSDATE , 'YYYY') || '0301' )
ELSE
CASE WHEN TRUNC(SYSDATE) > TO_DATE( TO_CHAR( SYSDATE , 'YYYY') || TO_CHAR(BIRTH_DATE , 'MMDD')) THEN
CASE WHEN /*MOD( TO_CHAR( SYSDATE , 'YYYY')+ 1, 4)*/ <> 0 AND TO_CHAR(BIRTH_DATE , 'MMDD') = '0229'
THEN TO_DATE( TO_CHAR( SYSDATE , 'YYYY') + 1 || '0301' )
ELSE TO_DATE( TO_CHAR( SYSDATE , 'YYYY') + 1 || TO_CHAR(BIRTH_DATE , 'MMDD')) END
ELSE TO_DATE( TO_CHAR( SYSDATE , 'YYYY') || TO_CHAR(BIRTH_DATE , 'MMDD'))
END END AS BIRTHDT
이렇게 쓰는게 있는데 이부분에서
ORA-01861 이 에러가 나는데 혹시 어떤부분인지 잘 모르겠네요ㅠㅠ 날짜형식이랑 string형식 비교?그때문인거같은데 저 case문에선 어떤부분인지 정확히 잘 모르겠어서 질문올립니다 ㅠ
○ 에러 발생 가능성 있는 부분
1. TO_CHAR(birth_date, 'mmdd') 에서 birth_date 가 문자인 경우
2. TO_DATE( TO_CHAR( SYSDATE , 'YYYY') || '0301' ) 날짜 포멧이 지정되지 않음
3. 기타 모든 TO_DATE() 함수 사용시 포멧 지정이 없음
- 변경전 : TO_DATE('20210301')
- 변경후 : TO_DATE('20210301', 'yyyymmdd')
○ 기타.
- 주석이 좀 이상하게 되어 있고
- 쿼리가 너무 복잡하네요. 간결하게 작성할 필요가 있습니다.