더북(TheBook)

③ MONTHS_BETWEEN(date1, date2)

MONTHS_BETWEEN 함수는 두 날짜 사이의 개월 수를 반환하는데, date2가 date1보다 빠른 날짜가 온다.

입력

    SELECT MONTHS_BETWEEN(SYSDATE, ADD_MONTHS(SYSDATE, 1)) mon1,
           MONTHS_BETWEEN(ADD_MONTHS(SYSDATE, 1), SYSDATE) mon2
      FROM DUAL;

결과

    MON1       MON2
    -------- -------
    -1            1

④ LAST_DAY(date)

LAST_DAY는 date 날짜를 기준으로 해당 월의 마지막 일자를 반환한다.

입력

    SELECT LAST_DAY(SYSDATE)
      FROM DUAL;

결과

    LAST_DAY(SYSDATE)
    ------------------------
    2015-03-31 22:11:24

⑤ ROUND(date, format), TRUNC(date, format)

ROUND와 TRUNC는 숫자 함수이면서 날짜 함수로도 쓰이는데, ROUND는 format에 따라 반올림한 날짜를, TRUNC는 잘라낸 날짜를 반환한다.

입력

    SELECT SYSDATE, ROUND(SYSDATE, 'month'), TRUNC(SYSDATE, 'month')
      FROM DUAL;

결과

    SYSDATE             ROUND(SYSDATE,'MONTH') TRUNC(SYSDATE,'MONTH')
    ------------------- ---------------------- ----------------------
    2015-03-16 22:11:51   2015-04-01 00:00:00    2015-03-01 00:00:00

ROUND 함수에서 보면 현재가 16일이므로 월(MONTH) 기준으로 반올림하면 다음 달로 넘어가 4월 1일이 되었다. 반면 TRUNC에서는 무조건 월을 기준으로 잘라내므로 3월 1일이 된 것이다. ROUND나 TRUNC나 숫자 함수에서 배웠던 것처럼 반올림과 잘라내기 기능을 하는데 매개변수가 날짜이면 해당 날짜를 반올림하고 잘라낸 결과를 반환한다.

⑥ NEXT_DAY (date, char)

NEXT_DAY는 date를 char에 명시한 날짜로 다음 주 주중 일자를 반환한다.

입력

    SELECT NEXT_DAY(SYSDATE, '금요일')
      FROM DUAL;

결과

    NEXT_DAY(SYSDATE,'금요일')
    --------------------------------
    2015-03-20 22:16:20

char로 올 수 있는 값은 ‘일요일’에서 ‘토요일’까지인데, 이 값은 NLS_LANG이란 오라클 환경 변수에 따라 한글이 올 수도, ‘SUNDAY’, ‘MONDAY’ 처럼 영문이 올 수도 있다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.