반응형
1️⃣ 날짜 차이 계산 (END_DATE - START_DATE)
- Oracle에서는 날짜끼리 빼면 자동으로 "일 수"가 반환됨.
- END_DATE - START_DATE → 두 날짜 간의 일수 차이(소수점 포함).
SELECT END_DATE, START_DATE, END_DATE - START_DATE AS DAYS_DIFF FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY; |
🔹 예제 결과
END_DATE | START_DATE | DAYS_DIFF |
2024-04-05 | 2024-04-01 | 4 |
2024-04-10 | 2024-04-03 | 7 |
✔ 주의: END_DATE - START_DATE는 기본적으로 시간(시:분:초) 차이까지 포함할 수 있어서 TRUNC()로 정리하는 게 좋음.
SELECT TRUNC(END_DATE) - TRUNC(START_DATE) AS DAYS_DIFF FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY; |
2️⃣ TRUNC() vs ROUND()
- 날짜에서 TRUNC(날짜)를 하면 시간(시:분:초)을 제거하고 날짜만 남음.
- ROUND(날짜)는 오전 12시 기준으로 반올림.
SELECT TRUNC(SYSDATE), ROUND(SYSDATE) FROM DUAL; |
예제 결과
TRUNC(SYSDATE) | ROUND(SYSDATE) |
2024-04-01 00:00:00 | 2024-04-02 00:00:00 |
✔ 주의: ROUND()는 정오(12:00) 이전이면 이전 날짜, 이후면 다음 날짜로 반올림됨.
3️⃣ 날짜에서 특정 단위 차이 구하기 (MONTHS_BETWEEN, EXTRACT)
- MONTHS_BETWEEN(END_DATE, START_DATE) → 개월 차이 반환 (소수점 포함)
- EXTRACT(YEAR FROM DATE) → 연도 추출
- EXTRACT(MONTH FROM DATE) → 월 추출
SELECT MONTHS_BETWEEN(DATE '2024-12-01', DATE '2024-01-01') AS MONTH_DIFF FROM DUAL; |
🔹 예제 결과 : 11
4️⃣ 날짜를 더하거나 빼는 연산
- 날짜 + 숫자 → 일(day) 단위로 더하기
- 날짜 - 숫자 → 일(day) 단위로 빼기
- ADD_MONTHS(날짜, 개월 수) → 개월 단위로 날짜 이동
SELECT SYSDATE AS TODAY, SYSDATE + 7 AS NEXT_WEEK, ADD_MONTHS(SYSDATE, 3) AS THREE_MONTHS_LATER FROM DUAL; |
🔹 예제 결과
TODAY | NEXT_WEEK | THREE_MONTHS_LATER |
2024-04-01 | 2024-04-08 | 2024-07-01 |
✔ SYSDATE + 7 같은 계산은 자동으로 날짜 연산 가능!
5️⃣ 시간 차이 구하기 (NUMTODSINTERVAL)
Oracle에서는 시간 단위 차이를 구할 때 NUMTODSINTERVAL(숫자, 'DAY' | 'HOUR' | 'MINUTE' | 'SECOND')를 사용.
SELECT NUMTODSINTERVAL(END_DATE - START_DATE, 'DAY') AS TIME_DIFF FROM CAR_RENTAL_COMPANY_RENTAL_HISTORY; |
🔹 예제 결과
TIME_DIFF |
+04 00:00:00 |
+07 00:00:00 |
✔ 이렇게 하면 날짜 차이를 "시:분:초"까지 변환 가능!
🔥 요약
기능 | 방법 |
날짜 차이 (일) | END_DATE - START_DATE |
개월 차이 | MONTHS_BETWEEN(END_DATE, START_DATE) |
연도/월/일 추출 | EXTRACT(YEAR FROM DATE) |
날짜에서 시간 제거 | TRUNC(DATE) |
날짜 반올림 | ROUND(DATE) |
날짜 더하기 | 날짜 + 숫자 |
개월 더하기 | ADD_MONTHS(DATE, 개월수) |
시간 차이 | `NUMTODSINTERVAL(날짜 차이, 'DAY' |
반응형
'Oracle' 카테고리의 다른 글
[ORACLE] TEXT 글자 찾기 (0) | 2025.05.28 |
---|---|
Oracle | Number Functions (0) | 2025.03.26 |
ORACLE | TRUNC(SYSDATE) 사용하는 이유 (0) | 2025.03.26 |
Oracle | COMMENT ON TABLE 테이블 설명을 추가하는 명령어 (1) | 2025.01.02 |
Oracle | 프로시저 / REF CURSOR (0) | 2025.01.02 |