[Oracle] 오라클 함수, ADD_MONTHS()

ADD_MONTHS 함수

- ADD_MONTHS( Date, Integer )

- 반환 : Date

- 해석 : input Date 날짜에서 integer로 들어온 숫자만큼의 달을 증가시켜준다. 즉 ADD_MONTHS( 1월2일, 3) -> 4월 2일 반환.




왜 사용하는가?


- 개발을 하면서 특정 날짜에서 10달 후 혹은 100달 후의 날짜가 필요할 수 있습니다. 그때 사용하는 함수가 ADD_MONTHS 함수입니다. 기준일과 플러스할 달의 숫자를 인자로 보내면 숫자만큼 지난 날짜가 나오게 됩니다. 지금으로부터 100달후의 날짜를 알고싶으면 ADD_MONTHS(sysdate,100) 이 되겠네요.


- 또한 월을 추가할때 부담되는 것이 매년 해당 월의 갯수가 같은것만은 아니라는 것!. 다른 달은 30 or 31일로 비교적 일정하겠지만 대표적으로 윤년인 경우가 있음. 이 윤년때문에 2월달이 29일까지 존재하게 되는데 구하는 알고리즘이 매우 까다롭기 때문에 이를 미리 염두해둔 ADD_MONTHS 함수를 사용하는 것이 개발자 부담면에서 더 덜게됨.(즉, 라이브러리 사용하자...일할땐!)


예제 1)

select add_months(sysdate,2) from dual;


> 2019-07-29 오전 11:29:02 (현재시각 2019-05-29 오전 11:29:02 )


예제 2)

select add_months('2019-05-05',2) from dual;


> 2019-07-05 

> '2019-05-05' 라는 스트링이 타입변환되어서 date 형 '2019-05-05'로 변환되어 인자로 적용됨.


예제 3)

select add_months(to_char('2019-05-05 12:12:12','YYYY-MM-DD'),2) from dual;


> 인자에러

> 이를 명시적으로 char형으로 변환해서 '2019-05-05'를 넣으니 에러가 발생함. 즉, add_months 함수의 첫번째 인자는 Date 형만 들어갈 수 있음



댓글

Designed by JB FACTORY