본문 바로가기
Program/ORACLE

[SQL] 오라클에서 특정 날짜의 분기 종료일(마지막 날짜) 구하는 방법 - ADD_MONTHS, LAST_DAY

by Dev200 2025. 2. 11.

 

오라클(Oracle)에서 특정 날짜가 속한 분기의 **마지막 날짜(분기 종료일)**을 구하려면 LAST_DAY 함수와 날짜 계산 로직을 결합하여 쉽게 구할 수 있습니다.

 

📌 분기 종료일 계산 로직

  1. 분기 종료 월 계산: 특정 날짜가 속한 분기의 마지막 월(3, 6, 9, 12)을 계산.
  2. 해당 월의 마지막 날짜 계산: LAST_DAY 함수를 사용하여 마지막 날을 구함.

 

📝 SQL 코드

SELECT LAST_DAY(ADD_MONTHS(TRUNC(your_date, 'Q'), 2)) AS quarter_end_date
FROM dual;

 

🔍 코드 설명

  • TRUNC(your_date, 'Q'): your_date를 해당 분기의 첫 번째 날로 변환.
  • ADD_MONTHS(..., 2): 분기 첫 번째 달에 2개월을 더해 분기 마지막 달로 이동.
  • LAST_DAY(...): 분기 마지막 달의 마지막 날짜를 계산.

 

📅 예제: 특정 날짜의 분기 종료일 구하기

특정 날짜 '2025-01-15'의 분기 종료일을 구하는 SQL은 다음과 같습니다.

SELECT LAST_DAY(ADD_MONTHS(TRUNC(TO_DATE('2025-01-15', 'YYYY-MM-DD'), 'Q'), 2)) AS quarter_end_date
FROM dual;

✅ 실행 결과

QUARTER_END_DATE

2025-03-31

 

🧪 다양한 날짜에 대한 테스트 예제

SELECT your_date,
       LAST_DAY(ADD_MONTHS(TRUNC(your_date, 'Q'), 2)) AS quarter_end_date
FROM (
    SELECT TO_DATE('2025-01-15', 'YYYY-MM-DD') AS your_date FROM dual UNION ALL
    SELECT TO_DATE('2025-04-10', 'YYYY-MM-DD') FROM dual UNION ALL
    SELECT TO_DATE('2025-07-20', 'YYYY-MM-DD') FROM dual UNION ALL
    SELECT TO_DATE('2025-10-05', 'YYYY-MM-DD') FROM dual
);

✅ 실행 결과

YOUR_DATE QUARTER_END_DATE
2025-01-15 2025-03-31
2025-04-10 2025-06-30
2025-07-20 2025-09-30
2025-10-05 2025-12-31

 

📢 참고 사항

  • TRUNC(your_date, 'Q'): 날짜를 해당 분기의 첫 날로 변환.
  • ADD_MONTHS: 특정 월을 더하거나 뺄 때 사용.
  • LAST_DAY: 월의 마지막 날을 구할 때 사용.

이 방식은 간결하고 다양한 날짜에 대해 확장 가능하므로 유용하게 활용할 수 있습니다! 😊


📌 관련 해시태그

#Oracle #SQL #쿼리 #분기 #날짜함수 #데이터베이스 #LAST_DAY #TRUNC #ADD_MONTHS #쿼리최적화 #DB관리 #오라클SQL #쿼리작성 #SQLTips #개발자팁 #쿼리튜닝 #Database #SQL쿼리 #오라클함수 #IT개발 #Backend