MONTHS_BETWEEN Function
MONTHS_BETWEEN (date1, date2)
두 날짜 사이의 개월 수를 구합니다.
사용 가능한 버전
Oracle 12c, Oracle 11g, Oracle 10g, Oracle 9i, Oracle 8i
매개변수
date1
- 첫 번째 날짜입니다.
date2
- 두 번째 날짜입니다.
특징
- date1이 date2 이후인 경우 결과는 양수입니다.
- date1이 date2보다 이전이면 결과는 음수입니다.
- date1과 date2가 일자가 같거나 월의 마지막 날인 경우 결과는 항상 정수입니다.
- 그렇지 않을 경우 MONTHS_BETWEEN 함수는 월 31 일을 기준으로 계산합니다.
- 동일한 날짜일 경우 결과는 0입니다.
Example Data
EX 1) 일자가 같은 날짜 사이의 개월 수
- 2021/05/31은 2021/03/31의 이후이므로 결과는 양수입니다.
- 2021/03/31은 2021/05/31의 이전이므로 결과는 음수입니다.
- 일자가 31일로 동일하므로 결과는 정수입니다.
SELECT MONTHS_BETWEEN(TO_DATE('31-MAY-21'), TO_DATE('31-MAR-21')) AS PLUS_MONTH
, MONTHS_BETWEEN(TO_DATE('31-MAR-21'), TO_DATE('31-MAY-21')) AS MINUS_MONTH
FROM DUAL;
EX 2) 월의 마지막 날짜인 경우
- 2021년 4월의 마지막 일은 30일이며, 2021년 5월의 마지막 일은 31일 이므로 사이의 값은 정수입니다.
SELECT MONTHS_BETWEEN(TO_DATE('31-MAY-21'), TO_DATE('30-APR-21')) AS PLUS_MONTH
, MONTHS_BETWEEN(TO_DATE('30-APR-21'), TO_DATE('31-MAY-21')) AS MINUS_MONTH
FROM DUAL;
EX 3) 일자가 다를 경우
SELECT MONTHS_BETWEEN(TO_DATE('1-MAY-21'), TO_DATE('30-APR-21')) AS PLUS_MONTH
, MONTHS_BETWEEN(TO_DATE('30-APR-21'), TO_DATE('1-MAY-21')) AS MINUS_MONTH
FROM DUAL;
조건에 따른 계산식
1. date1의 일자 > date2의 일자
계산식 : ( date1의 일자 - date2의 일자 ) / 31
2. date1의 일자 < date2의 일자
계산식 : ( 31 - date2의 일자 + date1의 일자 ) / 31
2021/05/01의 일자는 1일, 2021/04/30의 일자는 30일입니다.
date1의 일자 < date2의 일자이므로 (31 - 30 + 1) / 31 = 0.64516... 입니다.
반응형
'DataBase > Oracle' 카테고리의 다른 글
[ORACLE]특정일 다음의 날짜 NEXT_DAY 함수 (0) | 2021.05.18 |
---|---|
[ORACLE]해당 월의 마지막 날을 구하는 LAST_DAY 함수 (0) | 2021.05.18 |
[ORACLE]개월 수를 더하는 ADD_MONTHS 함수 (0) | 2021.05.17 |
[ORACLE]문자열 자르는 SUBSTR 함수 (0) | 2021.05.17 |
[ORACLE]공백 및 특정 문자를 제거하는 TRIM, LTRIM, RTRIM 함수 (0) | 2021.05.17 |
댓글