728x90

오라클 SQL에서 해당 월의 마지막 날짜를 손쉽게 구하는 방법은 바로 LAST_DAY() 함수를 사용하는 것입니다. 본 글에서는 해당 함수의 문법, 예제, 실무 적용 사례, 주의사항 등을 상세히 소개합니다.
1. LAST_DAY() 함수란?
LAST_DAY(date) 함수는 입력한 날짜가 속한 해당 월의 마지막 날을 반환합니다. 매우 직관적이고, 마감일 계산이나 월 단위 데이터 처리 시 유용하게 활용됩니다.
기본 문법
LAST_DAY(날짜)
예제 1: 기본 사용법
SELECT LAST_DAY(DATE '2025-06-10') AS end_of_month FROM dual;
-- 결과: 2025-06-30
예제 2: SYSDATE 기준 월말 구하기
SELECT LAST_DAY(SYSDATE) AS current_month_end FROM dual;
2. 다양한 날짜 유형에서 활용
LAST_DAY는 DATE 타입뿐 아니라 TIMESTAMP 타입에도 사용할 수 있으며, TO_DATE, TO_TIMESTAMP와 함께 자주 활용됩니다.
예제 3: 문자열 날짜 변환 후 사용
SELECT LAST_DAY(TO_DATE('2025-02-15', 'YYYY-MM-DD')) FROM dual;
-- 결과: 2025-02-28 (윤년이 아닌 해)
예제 4: 윤년의 2월 처리
SELECT LAST_DAY(DATE '2024-02-01') AS last_day FROM dual;
-- 결과: 2024-02-29
3. 실무 활용 예제
3-1. 월별 급여 지급일 계산
SELECT employee_id,
LAST_DAY(payment_date) AS salary_day
FROM payrolls;
3-2. 회계 마감일 자동 계산
SELECT accounting_period,
LAST_DAY(TO_DATE(accounting_period, 'YYYY-MM')) AS closing_date
FROM ledger;
3-3. 월말 재고 기준 추출
SELECT product_id, stock_qty, record_date
FROM inventory
WHERE record_date = LAST_DAY(record_date);
4. TRUNC, ADD_MONTHS와 조합하기
LAST_DAY는 TRUNC(), ADD_MONTHS() 등과 함께 사용하면 더욱 유용합니다.
예제 5: 이번 달 마지막 날과 다음 달 첫날 구하기
SELECT
LAST_DAY(SYSDATE) AS this_month_end,
TRUNC(ADD_MONTHS(SYSDATE, 1), 'MM') AS next_month_start
FROM dual;
5. 오류 방지 체크리스트
- 입력값은 DATE 또는 TIMESTAMP 형식이어야 함
- VARCHAR 타입은 반드시 TO_DATE()로 변환 후 사용
- 타임존 정보가 포함된 경우 변환 정확도에 유의
6. LAST_DAY 함수와 관련된 함수 비교
| 함수 | 설명 | 활용 예 |
|---|---|---|
| LAST_DAY(date) | 해당 월 마지막 날짜 반환 | 마감일, 리포트 자동 계산 |
| TRUNC(date, 'MM') | 해당 월의 1일 반환 | 월별 기준 일자 설정 |
| ADD_MONTHS(date, n) | N개월 후 날짜 반환 | 월 단위 계약일 계산 |
7. 요약
LAST_DAY()는 마감일 계산, 월별 데이터 필터링, 회계 처리 등 다양한 용도에서 활용되는 중요한 날짜 함수입니다. 단독 사용은 물론 TRUNC, ADD_MONTHS 등과의 조합을 통해 강력한 날짜 기반 로직을 구현할 수 있으며, 업무 자동화에 핵심적인 역할을 합니다.
참고자료
- Oracle 공식 문서
- Oracle 10g LAST_DAY Reference
- 업무 자동화 프로젝트에서의 실전 활용 경험
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] ROUND() 함수 초보 탈출 가이드: 숫자/날짜 반올림 핵심 정리 (0) | 2025.06.05 |
|---|---|
| [ORACLE] EXTRACT()로 연도 별, 월 별, 일자 별 통계 분석하는 방법 (0) | 2025.06.05 |
| [ORACLE] NEXT_DAY() 함수로 다음 특정 요일 구하는 방법과 실전 팁 (0) | 2025.06.05 |
| [ORACLE] ADD_MONTHS()로 손쉬운 월 단위 날짜 계산 구현하기 (0) | 2025.06.05 |
| [ORACLE] ADD_MONTHS()로 손쉬운 월 단위 날짜 계산 구현하기 (0) | 2025.06.05 |