Today's

길을 나서지 않으면 그 길에서 만날 수 있는 사람을 만날 수 없다

갑을병정이야기

Oracle에서 시스템 날짜를 활용한 분기 및 반기 계산 (connect by ...)

Billcorea 2025. 6. 7. 15:20
반응형

 

 

Oracle에서 시스템 날짜를 활용한 분기 및 반기 계산

열공하기

 

Oracle SQL을 사용하여 특정 기간(분기 또는 반기)의 시작일과 종료일을 계산하는 방법을 정리합니다.

1. 향후 2년간 분기 표시

현재 날짜를 기준으로 향후 2년(8개의 분기)에 대한 정보 출력

SQL 코드:
SELECT TO_CHAR(ADD_MONTHS(SYSDATE, (LEVEL - 1) * 3), 'YYYY-Q') AS quarter
FROM DUAL
CONNECT BY LEVEL <= 8;
    

2. 각 분기별 포함 일수 계산

각 분기(3개월 단위)에 해당하는 일수를 산출하는 방법

SQL 코드:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'Q'), (LEVEL - 1) * 3), 'YYYY-Q') AS quarter,
       LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE, 'Q'), (LEVEL - 1) * 3)) - ADD_MONTHS(TRUNC(SYSDATE, 'Q'), (LEVEL - 1) * 3) + 1 AS days_in_quarter
FROM DUAL
CONNECT BY LEVEL <= 8;
    

3. 향후 2년간 반기 표시 및 기간 계산

각 반기의 시작일과 종료일을 구하는 방법

SQL 코드:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6), 'YYYY-H1') AS half_year,
       ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6) AS start_date,
       ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6 + 5) AS end_date
FROM DUAL
CONNECT BY LEVEL <= 4;
    

4. 현재 날짜가 어떤 반기에 속하는지 확인

현재 날짜가 특정 반기에 포함되는지 체크하는 방법

SQL 코드:
SELECT TO_CHAR(ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6), 'YYYY-H1') AS half_year,
       ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6) AS start_date,
       ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6 + 5) AS end_date,
       CASE WHEN SYSDATE BETWEEN ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6) 
                            AND ADD_MONTHS(TRUNC(SYSDATE, 'YYYY'), (LEVEL - 1) * 6 + 5)
            THEN '현재 반기' ELSE '해당 없음' END AS current_half_year
FROM DUAL
CONNECT BY LEVEL <= 4;
    

이러한 SQL 쿼리를 활용하면 Oracle에서 시스템 날짜를 기반으로 반기와 분기를 쉽게 관리할 수 있습니다!

 

 

 

반응형