DataBase/Oracle

[ORACLE]개월 수를 더하는 ADD_MONTHS 함수

DevStory 2021. 5. 17.

ADD_MONTHS Function

ADD_MONTHS (init_date, add_months)

특정 일자에서 월을 더한 값을 반환하는 함수입니다.

 

사용 가능한 버전

Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i


매개변수

init_date

-  datetime Type 또는 DATE로 변환할 수 있는 값입니다.

 

add_months

- 초기 날짜(initdate)에 추가할 개월 수를 지정합니다.

- 음수일 경우 초기 날짜(init_date)의 이전 개월로 계산됩니다.

- 0일 경우 초기 날짜(init_date)의 마지막 날입니다.

 


특징

  1. ADD_MONTHS 함수는 날짜 데이터 타입의 값을 반환합니다.
  2. 초기 날자가 월의 마지막 날일 경우 반환 값은 해당 월의 마지막 날입니다. 

 


Example Data

EX 1) 1개월 더한 날짜, 12개월 더한 날짜

- 오늘 일자(2021-05-17)에서 1개월을 더하면 2021-06-17이 반환됩니다.

- 오늘 일자(2021-05-17)에서 12개월을 더하면 2022-05-17이 반환됩니다.

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(ADD_MONTHS(SYSDATE, 1), 'YYYY-MM-DD HH24:MI:SS') AS NEXT_MONTH
     , TO_CHAR(ADD_MONTHS(SYSDATE, 12), 'YYYY-MM-DD HH24:MI:SS') AS NEXT_YEAR
FROM DUAL;


EX 2) -1개월 더한 날짜, -12개월 더한 날짜

- 오늘 일자(2021-05-17)에서 -1개월을 더하면 2020-06-17이 반환됩니다.

- 오늘 일자(2021-05-17)에서 -12개월을 더하면 2020-05-17이 반환됩니다.

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') AS NOW_DATE
     , TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'YYYY-MM-DD HH24:MI:SS') AS BEFORE_MONTH
     , TO_CHAR(ADD_MONTHS(SYSDATE, -12), 'YYYY-MM-DD HH24:MI:SS') AS BEFORE_YEAR
FROM DUAL;


EX 3) 초기 날짜가 마지막 날인 경우

- 2021-06-31은 존재하지 않은 날짜이므로 6월의 마지막 날인 2021-06-30이 반환됩니다.

- 2021-02-31은 존재하지 않은 날짜이므로 2월의 마지막 날인 2021-02-28이 반환됩니다.

SELECT TO_CHAR(TO_DATE('31-MAY-21'), 'YYYY-MM-DD HH24:MI:SS') AS DATE1
     , TO_CHAR(ADD_MONTHS(TO_DATE('31-MAY-21'), 1), 'YYYY-MM-DD HH24:MI:SS') AS NEXT_MONTH_DATE1
     , TO_CHAR(TO_DATE('31-MAR-21'), 'YYYY-MM-DD HH24:MI:SS') AS DATE2
     , TO_CHAR(ADD_MONTHS(TO_DATE('31-MAR-21'), -1), 'YYYY-MM-DD HH24:MI:SS') AS BEFORE_MONTH_DATE2
FROM DUAL;

반응형

댓글