MONTHS_BETWEEN 스칼라 함수

MONTHS_BETWEEN 함수는 expression1expression2 사이의 월 수의 추정을 리턴합니다.

Read syntax diagramSkip visual syntax diagramMONTHS_BETWEEN(expression1 ,expression2)

스키마는 SYSIBM입니다.

expression1 또는 expression2
DATE 또는 TIMESTAMP 데이터 유형의 값을 리턴하는 표현식입니다.
expression1expression2보다 나중 날짜를 나타내는 경우, 결과는 양수입니다. expression1이 expression2보다 앞의 날짜인 경우, 결과는 음수입니다.
  • expression1expression2가 월의 동일한 일로 날짜 또는 시간소인을 나타내거나 인수 모두가 각각의 월의 마지막 일을 나타내는 경우, 결과는 시간소인 인수의 시간 분할 영역을 무시하는 연도와 월 값을 기반으로 하는 정수 차이입니다.
  • 그렇지 않으면, 결과의 정수 파트는 연도와 월 값을 기반으로 하는 차이입니다. 결과의 소수부가 매월 31일이 있다는 가정을 기반으로 하는 나머지에서 계산됩니다. 인수 중 하나가 시간소인을 나타내는 경우, 인수는 최대 정밀도를 가지는 시간소인으로 효과적으로 처리되고 이러한 값의 시간 분할 영역은 결과를 판별할 때 고려됩니다.

함수의 결과는 DECIMAL(31,15)입니다. 인수 중 하나가 널(NULL)일 수 있는 경우, 결과는 널(NULL)일 수 있습니다. 인수 중 하나가 널(NULL)인 경우, 결과는 널(NULL) 값입니다.

예:

  • 예제 1: 프로젝트 AD3100이 가져오는 월 수를 계산하십시오. 시작 날짜는 1982-01-01이고 종료 날짜는 1983-02-01이라고 가정하십시오.
    
        SELECT MONTHS_BETWEEN (PRENDATE, PRSDATE)  
           FROM PROJECT
           WHERE PROJNO='AD3100'
     

    결과는 13.000000000000000입니다.

  • 예제 2: 고려할 추가 예제가 있습니다.
    표 1. MONTHS_BETWEEN을 사용하는 추가 예제
    e1 인수의 값 인수 e2 의 값
    MONTHS_BETWEEN(e1,e2)에서 리턴한 값

    ROUND
    (
    MONTHS_BETWEEN
    (e1,e2)*31,2
    )에서 리턴한 값
    주석
    2005-02-02 2005-01-01 1.032258064516129 32.00  
    2007-11-01-09.00.00.00000 2007-12-07-14.30.12.12345 -1.200945386592741 -37.23  
    2007-12-13-09.40.30.00000 2007-11-13-08.40.30.00000 1.000000000000000 31.00 참고 1 참조
    2007년 03월 15일 2007-02-20 0.838709677419354 26.00 참고 2 참조
    2008-02-29 2008-02-28-12.00.00 0.016129032258064 0.50  
    2008-03-29 2008-02-29 1.000000000000000 31.00  
    2008-03-30 2008-02-29 1.032258064516129 32.00  
    2008-03-31 2008-02-29 1.000000000000000 31.00 참고 3 참조
    참고:
    1. 월의 일이 양쪽 값 모두와 동일하므로 시간 차이가 무시됩니다.
    2. 2월에 28일만 있지만 모든 월에 31일이 있다고 가정하므로 결과는 23이 아닙니다.
    3. 데이터 모두가 각각의 월의 마지막 일이므로 결과는 33이 아닙니다. 따라서, 결과는 연도와 월 분할 영역만 기반으로 합니다.