본문 바로가기
DataBase/ORACLE

[ORACLE] INTERVAL 함수 사용 시 ORA-01839 date not valid for month specified 오류 발생

by ojava 2023. 8. 29.
반응형

변경한 적 없는데 갑자기 ORA-01839 date not valid for month specified 오류가 발생한다면 오늘이 몇 일인지 확인해보자.

날짜가 29일로 끝나는데 2월 언저리의 날짜를 계산 결과로 반환한다면 백프로 2월 29일로 결과값이 떨어져서임 ㅠㅠ


SYSDATE - (INTERVAL '6' MONTH) 특정한 몇 개월 전의 날짜를 계산하는 로직이 있거나
SYSDATE - (INTERVAL '1' YEAR) 형태로 1년 전 또는 몇 년전 날짜를 계산하는 로직이 있을 때도 발생할 수 있다.



해결 방법은 간단하다.

INTERVAL로 되어있는 내용을 ADD_MONTHS로 바꿔주자.

INTERVAL의 경우 직관적으로 며칠, 몇 개월, 몇 년 단위의 계산인지를 볼 수 있는 장점이 있지만 이런 2월 29일 형태의 날짜가 존재하지 않는 평년일 때 2월 29일을 반환하면 ORACLE 오류를 발생시킬 위험이 있다.

8월 29일을 기준으로 6개월 전 날짜를 구하는 형태로 짰다고 가정할 때, 올해가 평년이라면

  • SYSDATE - (INTERVAL '6' MONTH)의 경우 8월 29일부터 31일까지 계속 오류가 발생
  • ADD_MONTHS(SYSDATE, -6) 으로 계산하면 정상적으로 2월 28일로 계산되어 반환된다.



오늘 갑자기 쿼리에서 오류가 발생하길래 써봄
모두 빠른 퇴근하시고 미래의 나에게 도움이 되기를❤️


반응형