[Oracle] 해당 월의 마지막 날짜 구하기 (LAST_DAY)
- 데이터베이스 / 오라클
- 2022. 1. 17.
오라클에서 해당 월(MONTH)의 마지막 일자를 구하기 위해서는 LAST_DAY 함수를 사용하면 된다. 월별로 마지막 일자(28일, 29일, 30일, 31일)가 틀리기 때문에 조회를 할 때마다 직접 계산을 하는 건 많이 번거롭다. LAST_DAY 함수를 사용하면 이번 달의 마지막 일자, 특정 일자에 해당하는 월의 마지막 일자를 쉽게 구할 수 있다.

기본 사용법
SELECT LAST_DAY(TO_DATE('2022-01-17', 'YYYY-MM-DD'))
FROM dual
![]() |
특정일자에 해당하는 월의 마지막 일자를 구하는 예제이다. 1월의 마지막 일자 31일 반환된다.
활용 예제
이번 달 시작 일자 종료 일자 구하기
SELECT TRUNC(SYSDATE, 'MM') AS first_day_of_month
, LAST_DAY(TRUNC(SYSDATE)) AS last_day_of_month
FROM dual
![]() |
TRUNC 함수를 사용하면 해당 일자 월의 시작일을 쉽게 구할 수 있다. TRUNC('날짜', 'MM')
LAST_DAY 함수를 사용하여 SYSDATE 기준에 해당하는 월의 마지막 일자를 구하는 예제이다.
올해 월별(1월~12일) 시작 일자 종료 일자 구하기
SELECT a.first_day_of_month
, LAST_DAY(a.first_day_of_month) AS last_day_of_month
FROM (
SELECT ADD_MONTHS(TO_DATE('2022-01-01', 'YYYY-MM-DD'), LEVEL - 1 ) AS first_day_of_month
FROM dual
CONNECT BY LEVEL <= 12
) a
![]() |
지정한 해의 1월부터 12월까지 시작일자와 마지막 일자를 구하는 예제이다.
월별 입사자 조회
SELECT empno
, ename
, job
, hiredate
FROM emp
WHERE hiredate BETWEEN TO_DATE('1981-09-01', 'YYYY-MM-DD')
AND LAST_DAY(TO_DATE('1981-09-01', 'YYYY-MM-DD'))
ORDER BY hiredate
![]() |
WHERE 절에서 월별 데이터를 조회할 때 자주 사용한다.
가끔 쿼리문을 분석하다 보면 WHERE TO_CHAR(hiredate, 'YYYYMM') = TO_CHAR(SYSDATE, 'YYYYMM')처럼 좌측의 칼럼에 함수를 사용하여 월별 데이터를 조회한 쿼리를 발견할 때가 있다. 기준 칼럼에 함수를 사용하면 인덱스를 타지 않아서 속도가 느려질 수 있으니, 위의 예제처럼 BETWEEN을 사용하여 조회하는 것이 바람직하다.
[오라클] TRUNC 함수 사용방법 (시간, 소수점, 절사, 트렁크)
오라클(Oracle) TRUNC 함수 사용법 TRUNC 함수는 오라클의 아주 기본적인 함수이다. 단순 절사기능만 사용했다면 아래의 다양한 옵션을 익히면 조금 더 활용도를 높일 수 있다. TRUNC 함수 TRUNC 함수는
gent.tistory.com
[Oracle] 오라클 BETWEEN ~ AND 범위 검색 사용법 (날짜, 문자)
오라클에서 쿼리문을 작성하다 보면 가장 많이 사용하는 연산자 중 하나는 BETWEEN일 것이다. BETWEEN은 날짜, 숫자의 범위 검색에 아주 유용하게 사용할 수 있으며, 문자의 범위 검색도 가능하다.
gent.tistory.com
[Oracle] 오라클 ADD_MONTHS 함수 사용법 (이전달, 다음달, 월빼기)
오라클에서 날짜의 월을 빼거나 더하기 위해서는 ADD_MONTHS 함수를 사용한다. 날짜의 일은 변경되지 않으며 연산값에 따라서 년도와 월만 변경이 된다. 함수를 사용하면서 주의할 점은 날짜의 이
gent.tistory.com