반응형
효율적인 오라클 날짜 계산 쿼리: 실습을 통한 이해
1. 오늘 날짜를 기준으로 날짜 계산
예제의 오늘날짜는 2024-06-28입니다.
1.1 오늘 날짜부터 N일 전/후의 날짜 구하기
SYSDATE 함수를 사용하여 오늘 날짜로부터 N일 전/후의 날짜를 계산하는 방법을 설명합니다.
SELECT SYSDATE - N AS N_Days_Before FROM dual;
SELECT SYSDATE + N AS N_Days_Later FROM dual;
- SYSDATE: 현재 날짜와 시간을 반환합니다.
- - N: 현재 날짜에 N일을 뺍니다.
- + N: 현재 날짜에 N일을 더합니다.
- 출력 예시(N=7)
1.2 오늘 날짜로부터 N개월 전/후의 날짜 구하기
SYSDATE 함수를 이용하여 오늘 날짜로부터 N개월 전/후의 날짜를 구하는 쿼리입니다.
SELECT ADD_MONTHS(SYSDATE, -N) AS N_Months_Ago FROM dual;
SELECT ADD_MONTHS(SYSDATE, N) AS N_Months_Later FROM dual;
- ADD_MONTHS(date, n): 지정된 날짜(date)에 n개월을 빼거나 더합니다.
- 출력 예시(N=3)
1.3 오늘 날짜로부터 N 년 전/후의 날짜 구하기
SYSDATE 함수를 이용하여 오늘 날짜로부터 N 년 전/의 날짜를 구하는 쿼리입니다.
SELECT ADD_MONTHS(SYSDATE, -12 * N) AS N_Years_Ago FROM dual;
SELECT ADD_MONTHS(SYSDATE, 12 * N) AS N_Years_Later FROM dual;
- ADD_MONTHS(date, n): 지정된 날짜(date)에 n개월을 빼거나 더합니다.
여기서 N년은 - 12개월 * N / 12개월 * N으로 계산됩니다.
- 출력 예시(N=5)
2. 특정 날짜를 기준으로 날짜 계산
2.1 특정 날짜로부터 N일 전/후의 날짜 구하기
특정 날짜를 기준으로 N일 후의 날짜를 계산하는 방법입니다.
SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD') - N AS N_Days_Ago FROM dual;
SELECT TO_DATE('2024-01-01', 'YYYY-MM-DD') + N AS N_Days_Later FROM dual;
- TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- + N: 날짜에 N일을 더합니다.
- - N: 날짜에 N일을 뺍니다
- 출력 예시(N=10)
2.2 특정 날짜로부터 N개월 전/후의 날짜 구하기
특정 날짜를 기준으로 N개월 전/후의 날짜를 계산하는 방법입니다.
SELECT ADD_MONTHS(TO_DATE('2024-01-01', 'YYYY-MM-DD'), -N) AS N_Months_Ago FROM dual;
SELECT ADD_MONTHS(TO_DATE('2024-01-01', 'YYYY-MM-DD'), N) AS N_Months_Later FROM dual;
- ADD_ MONTHS(date, n): 지정된 날짜(date)에 n개월을 빼거나 더합니다.
- TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- 출력 예시(N=2)
2.3 특정 날짜로부터 N 년 전/후의 날짜 구하기
특정 날짜를 기준으로 N 년 전/후의 날짜를 계산하는 방법입니다.
SELECT ADD_MONTHS(TO_DATE('2024-01-01', 'YYYY-MM-DD'), -12 * N) AS N_Years_Ago FROM dual;
SELECT ADD_MONTHS(TO_DATE('2024-01-01', 'YYYY-MM-DD'), 12 * N) AS N_Years_Later FROM dual;
- ADD_MONTHS(date, n): 지정된 날짜(date)에 n개월을 더하거나 뺍니다.
여기서 N년은 - 12개월 * N /12개월 * N으로 계산됩니다. - TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- 출력 예시 (N=3)
3. 날짜 간의 차이 계산
3.1 두 날짜 사이의 일수 계산
날짜 형식을 변환하는 방법으로, YYYY-MM-DD 형식을 MM/DD/YYYY 형식으로 변환하는 쿼리입니다.
SELECT TO_DATE('2024-12-31', 'YYYY-MM-DD') - TO_DATE('2024-01-01', 'YYYY-MM-DD') AS Days_Between FROM dual;
- TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- TO_CHAR(date, 'format'): 날짜(date)를 지정된 형식(format)으로 문자열로 변환합니다.
4. 날짜 형식 변환
4.1 날짜 형식을 다른 형식으로 변환하기
날짜 형식을 변환하는 방법으로, YYYY-MM-DD 형식을 MM/DD/YYYY 형식으로 변환하는 쿼리입니다.
SELECT TO_CHAR(TO_DATE('2024-01-01', 'YYYY-MM-DD'), 'MM/DD/YYYY') AS Formatted_Date FROM dual;
- TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- TO_CHAR(date, 'format'): 날짜(date)를 지정된 형식(format)으로 문자열로 변환합니다
4.2 다양한 날짜 형식 변환
- YYYY-MM-DD 형식을 DD-MM-YYYY 형식으로 변환:
SELECT TO_CHAR(TO_DATE('2024-01-01', 'YYYY-MM-DD'), 'DD-MM-YYYY') AS Formatted_Date FROM dual;
- YYYY-MM-DD 형식을 Month DD, YYYY 형식으로 변환:
SELECT TO_CHAR(TO_DATE('2024-01-01', 'YYYY-MM-DD'), 'Month DD, YYYY') AS Formatted_Date FROM dual;
5. 복합적인 날짜 계산
5.1 특정 일자의 요일 구하기
특정 일자의 요일을 구하려면 오라클 SQL에서 TO_CHAR 함수를 사용하여 날짜를 특정 형식으로 변환할 수 있습니다. 요일을 구하려면 'DY' 또는 'DAY' 형식을 사용합니다.
SELECT TO_CHAR(TO_DATE('2024-01-01', 'YYYY-MM-DD'), 'DAY') AS Day_Of_Week FROM dual;
- TO_DATE(char, 'format'): 문자열(char)을 지정된 형식(format)으로 날짜로 변환합니다.
- TO_CHAR(date, 'format'): 날짜(date)를 지정된 형식(format)으로 문자열로 변환합니다. 'DAY' 형식은 날짜의 요일을 반환합니다.
5.2 특정 달의 첫 번째 날짜와 마지막 날짜 구하기
SELECT
TRUNC(TO_DATE('2024-06-15', 'YYYY-MM-DD'), 'MM') AS First_Day_Of_Month,
LAST_DAY(TO_DATE('2024-06-15', 'YYYY-MM-DD')) AS Last_Day_Of_Month
FROM dual;
- TRUNC(date, 'unit'):
- date: 변환할 날짜입니다.
- unit: 날짜를 자르는 단위입니다. 'MM'은 달의 첫 번째 날짜로 자릅니다.
예를 들어, '2024-06-15'를 'MM' 단위로 자르면 '2024-06-01'이 됩니다.
- LAST_DAY(date):
- date: 주어진 날짜가 속한 달의 마지막 날짜를 반환합니다.
예를 들어, '2024-06-15'가 주어지면 '2024-06-30'을 반환합니다.
- date: 주어진 날짜가 속한 달의 마지막 날짜를 반환합니다.
관련 글
2024.07.02 - [개발(Dev)/DB] - [ORACLE]오라클 집계 함수: ROLLUP 포함 활용법 및 예제
여기까지 읽어주셔서 진심으로 감사드립니다.
이 글이 마음에 드셨다면, 우측 아래 하트(공감)를 눌러 응원의 표시를 부탁드려요.
여러분의 소중한 관심과 사랑이 큰 힘이 됩니다. 감사합니다!
반응형
'개발(Dev) > DB' 카테고리의 다른 글
[ORACLE]오라클 집계 함수: ROLLUP 포함 활용법 및 예제 (0) | 2024.07.02 |
---|---|
DBeaver 행(라인) 번호 표시 (0) | 2024.02.15 |
[DB TRIGGER]트리거란? 데이터베이스 트리거의 모든 것 (0) | 2020.08.17 |