안녕하세요. 오늘은 간단한 주제로 가져왔습니다.
바로 많이들 쓰시는 RP_CALC_DATE_IN_INTERVAL 날짜함수와 관련된 내용인데요. 그냥 바로 보시겠습니다.
일자 함수로 많이들 쓰는 RP_CALC_DATE_IN_INTERVAL으로 1월 31일에서 1달 후를 확인해보겠습니다. 실행결과는 3월 1일이 발생합니다.
이건 RP_CALC_DATE_IN_INTERVAL의 내부로직에 날짜를 검토하는 과정에서 날짜가 포맷과 맞지 않으면(ex. 2월30일) 그냥 다음달로 넘어가버립니다. 아래의 로직이 날짜가 유효하지 않으면 test_date에 값자체가 입력되지 않습니다.
그러면 밑의 로직에서 그냥 무대포로 32를 더해 다음달로 무조건 넘겨버립니다. 그래서 3월 1일로 변경되는 거죠.
해결 방안...이랄 건 딱히 아니지만 Function을 바꾸시면 됩니다. 아래의 FIMA_DATE_CREATE 을 사용하시면 2월 28일로 반환됨을 확인하실 수 있습니다.
DATA : lv_date LIKE ...