반응형
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에서 시스템 날짜를 기반으로 반기와 분기를 쉽게 관리할 수 있습니다!
반응형
'갑을병정이야기' 카테고리의 다른 글
DevExpress dxDataGrid 활용 및 JSON 데이터 처리 (2) | 2025.06.05 |
---|---|
Eclipse Java Code Templates 생성 하는 방법? (1) | 2025.05.30 |
Oracle 실전 활용 팁 모음 (2) (1) | 2025.04.21 |
Oracle 실전 활용 팁 모음 (1) | 2025.04.16 |
안드로이드 개발과 유용한 팁들 (1) | 2024.12.25 |