반응형
변경한 적 없는데 갑자기 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일로 계산되어 반환된다.
오늘 갑자기 쿼리에서 오류가 발생하길래 써봄
모두 빠른 퇴근하시고 미래의 나에게 도움이 되기를❤️
반응형
'DataBase > ORACLE' 카테고리의 다른 글
[트러블슈팅] Oracle ORA-12514 : TNS 리스너 연결 실패 (0) | 2023.10.31 |
---|---|
[Oracle] 시퀀스값 일괄 증가, Sequence NEXTVAL 반복 수행 (0) | 2023.07.06 |
[ORACLE] 객체 참조를 위한 SYNONYM 생성 및 사용 방법 (0) | 2021.11.29 |
[Oracle] 순위 결정을 위한 ROW_NUMBER, RANK, DENSE_RANK 함수 사용법 비교 (0) | 2021.01.27 |
[Oracle] 19c Upgrade : 전환 시 고려사항 (0) | 2020.10.11 |