대덕인재/Oracle

[Oracle D-9] 날짜함수 (SYSDATE, SYSTIMESTAMP, ADD_MONTHS,...등등등)

꼬마버거 2025. 4. 11. 19:49

🔹 SYSDATE란?

SYSDATE는 오라클 서버의 현재 날짜와 시간을 반환하는 함수야.
→ DATE 타입으로 반환되고, 날짜와 시간(시:분:초) 까지 포함돼 있어.

 

✅ 사용 예시

SELECT SYSDATE FROM DUAL;

 

📌 결과 (예시):

🔸 SYSDATE와 자주 쓰는 함수들 

함수 설명
SYSDATE 현재 날짜 + 시간
TRUNC(SYSDATE) 시간은 제거하고 날짜만 가져옴 (00:00:00)
TO_CHAR(SYSDATE, 'YYYY-MM-DD') 문자열 형식으로 날짜 출력
SYSDATE + 1 하루 뒤 (내일)
SYSDATE - 7 일주일 전
ADD_MONTHS(SYSDATE, 3) 3개월 뒤 날짜
EXTRACT(YEAR FROM SYSDATE) 현재 연도만 추출

 

🔸 SYSDATE 예제들

▶ 오늘이 몇 요일인지 확인

 

SELECT TO_CHAR(SYSDATE, 'DAY') AS 요일 FROM DUAL;

 

▶ 생일에서 나이 계산

SELECT EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM TO_DATE('1995-04-11', 'YYYY-MM-DD')) AS 나이 FROM DUAL;

 

 

✅ Oracle 날짜 함수 전체 정리

함수 이름 설명 예시
SYSDATE 현재 날짜와 시간 SELECT SYSDATE FROM DUAL;
CURRENT_DATE 현재 세션 시간대의 날짜 SELECT CURRENT_DATE FROM DUAL;
SYSTIMESTAMP 시간 + 소수초 + 타임존 SELECT SYSTIMESTAMP FROM DUAL;
ADD_MONTHS(date, n) n개월 더하거나 빼기 ADD_MONTHS(SYSDATE, 2)
MONTHS_BETWEEN(date1, date2) 두 날짜 사이의 개월 수 MONTHS_BETWEEN('2025-04-01', '2024-01-01')
NEXT_DAY(date, '요일') 다음 요일 찾기 NEXT_DAY(SYSDATE, '월요일')
LAST_DAY(date) 그 달의 마지막 날 LAST_DAY(SYSDATE)
TRUNC(date) 날짜의 시간 제거 (00:00:00) TRUNC(SYSDATE)
ROUND(date) 날짜 반올림 (정오 기준) ROUND(SYSDATE)
EXTRACT(part FROM date) 날짜에서 연도, 월 등 뽑기 EXTRACT(YEAR FROM SYSDATE)

 

 

📘 각 함수 설명 + 예시

1. 📅 SYSDATE — 현재 날짜/시간

SELECT SYSDATE FROM DUAL;
-- 2025-04-11 10:23:45 (현재 시간)

 

2. 📈 ADD_MONTHS — 개월 더하거나 빼기

SELECT ADD_MONTHS(SYSDATE, 2) FROM DUAL;   -- 2개월 후
SELECT ADD_MONTHS(SYSDATE, -1) FROM DUAL;  -- 1개월 전

3. 📆 MONTHS_BETWEEN — 개월 차이

SELECT MONTHS_BETWEEN(TO_DATE('2025-04-01','YYYY-MM-DD'), 
                      TO_DATE('2024-01-01','YYYY-MM-DD')) AS 개월수
FROM DUAL;
-- 결과: 15

4. 🔁 NEXT_DAY — 다음 특정 요일

SELECT NEXT_DAY(SYSDATE, '금요일') FROM DUAL;
-- 오늘 이후 첫 번째 금요일

5. 📅 LAST_DAY — 그 달의 마지막 날

SELECT LAST_DAY(SYSDATE) FROM DUAL;
-- 2025-04-30

6. ✂️ TRUNC vs ROUND

SELECT TRUNC(SYSDATE), ROUND(SYSDATE) FROM DUAL;

7. 📤 EXTRACT — 날짜 정보만 뽑기

SELECT EXTRACT(YEAR FROM SYSDATE) AS 연도,
       EXTRACT(MONTH FROM SYSDATE) AS 월,
       EXTRACT(DAY FROM SYSDATE) AS 일
FROM DUAL;

 

 

🧠 날짜 계산 팁


 

계산 예시
내일 SYSDATE + 1
어제 SYSDATE - 1
일주일 전 SYSDATE - 7
한 시간 후 SYSDATE + 1/24
30분 후 SYSDATE + 1/48

 

🔁 날짜 → 문자열, 문자열 → 날짜

1. TO_CHAR() — 날짜를 문자열로

SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') FROM DUAL;
-- 결과: 2025-04-11 10:35:00

2. TO_DATE() — 문자열을 날짜로

SELECT TO_DATE('2025-05-01', 'YYYY-MM-DD') FROM DUAL;

 

✅ 요약표


 

기능 함수
오늘 날짜 SYSDATE
시간 포함된 날짜 SYSTIMESTAMP
개월 계산 ADD_MONTHS, MONTHS_BETWEEN
요일/말일 NEXT_DAY, LAST_DAY
잘라내기/반올림 TRUNC, ROUND
추출 EXTRACT(YEAR...)
날짜 ↔ 문자열 TO_CHAR, TO_DATE