날짜 및 시간 함수: SYSDATE, CURRENT_TIMESTAMP, EXTRACT() 완벽 정리
SQL에서 날짜와 시간을 다루는 것은 매우 중요합니다.
특히 현재 날짜를 가져오거나, 특정 날짜에서 연도/월/일을 추출하는 기능은 실무에서 자주 사용됩니다.
이번 글에서는 Oracle SQL에서 날짜 및 시간을 다룰 때 사용하는 주요 함수를 쉽게 설명하겠습니다! 😊
🔹 1. 현재 날짜 및 시간 구하기
✅ SYSDATE (현재 날짜 및 시간 반환)
📌 SYSDATE는 현재 서버의 날짜와 시간을 반환하는 함수입니다.
✔ 형식: YYYY-MM-DD HH24:MI:SS
SELECT SYSDATE FROM dual;
✔ 실행하면 현재 날짜와 시간이 반환됩니다.
✅ CURRENT_TIMESTAMP (현재 날짜 + 시간대 정보 포함)
📌 CURRENT_TIMESTAMP는 현재 날짜와 시간 + 타임존(time zone) 정보를 반환합니다.
SELECT CURRENT_TIMESTAMP FROM dual;
✔ SYSDATE와 다르게 시간대(Time Zone)까지 포함됩니다.
📍 SYSDATE vs. CURRENT_TIMESTAMP 차이
함수 | 반환 값 | 시간대 포함 여부 |
SYSDATE | 2025-02-15 12:30:00 | ❌ (없음) |
CURRENT_TIMESTAMP | 2025-02-15 12:30:00.123 +09:00 | ✅ (포함됨) |
✔ SYSDATE는 시간대 정보 없이 현재 날짜/시간만 제공
✔ CURRENT_TIMESTAMP는 밀리초 단위 + 시간대 포함
🔹 2. 특정 날짜에서 연/월/일 추출하기
📌 EXTRACT() 함수는 날짜에서 특정 값을 추출할 때 사용됩니다.
✔ 연도, 월, 일, 시, 분, 초 등을 가져올 수 있음
✅ EXTRACT() 문법
EXTRACT(부분 FROM 날짜)
✅ 예제: 날짜에서 연도, 월, 일 추출
SELECT
EXTRACT(YEAR FROM SYSDATE) AS current_year,
EXTRACT(MONTH FROM SYSDATE) AS current_month,
EXTRACT(DAY FROM SYSDATE) AS current_day
FROM dual;
✔ 오늘 날짜가 2025-02-15라면 결과는 다음과 같습니다.
current_year | current_month | current_day |
2025 | 2 | 15 |
✅ 예제: 시간 정보 추출
SELECT
EXTRACT(HOUR FROM CURRENT_TIMESTAMP) AS current_hour,
EXTRACT(MINUTE FROM CURRENT_TIMESTAMP) AS current_minute,
EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS current_second
FROM dual;
✔ CURRENT_TIMESTAMP에서 시간, 분, 초만 추출 가능
🔹 3. 날짜 및 시간 함수 실전 예제
✅ 오늘 날짜에서 1년 후, 1개월 후, 7일 후 구하기
SELECT
SYSDATE AS today,
ADD_MONTHS(SYSDATE, 12) AS one_year_later,
ADD_MONTHS(SYSDATE, 1) AS one_month_later,
SYSDATE + 7 AS one_week_later
FROM dual;
✔ ADD_MONTHS(SYSDATE, n)을 사용하면 특정 개월 수를 더할 수 있음
✔ SYSDATE + 7은 7일 후 날짜 계산
✅ 두 날짜 차이 구하기 (DATEDIFF 대신 - 연산)
SELECT
TO_DATE('2025-03-01', 'YYYY-MM-DD') - SYSDATE AS days_until_march
FROM dual;
✔ 날짜를 빼면 두 날짜 간 차이(일수)를 계산할 수 있음
🔹 4. 날짜 및 시간 함수 정리
함수 | 설명 | 예제 |
SYSDATE | 현재 날짜와 시간 반환 | SELECT SYSDATE FROM dual; |
CURRENT_TIMESTAMP | 현재 날짜 + 시간대 포함 | SELECT CURRENT_TIMESTAMP FROM dual; |
EXTRACT() | 날짜에서 특정 값 추출 | EXTRACT(YEAR FROM SYSDATE) |
ADD_MONTHS() | 개월 수 더하기 | ADD_MONTHS(SYSDATE, 1) |
날짜1 - 날짜2 | 날짜 차이 계산 (일 단위) | TO_DATE('2025-03-01') - SYSDATE |
✔ SYSDATE는 현재 날짜 반환
✔ EXTRACT()로 연도, 월, 일, 시간 등 부분 추출 가능
✔ ADD_MONTHS()를 사용해 날짜 계산 가능
🔹 5. 실전 연습 문제
1️⃣ 오늘 날짜에서 연도, 월, 일을 추출하는 SQL 작성
2️⃣ 현재 시간에서 시, 분, 초를 추출하는 SQL 작성
3️⃣ 오늘 날짜에서 100일 후의 날짜를 구하는 SQL 작성
4️⃣ 현재 날짜와 '2025-12-31' 사이의 일 수 차이를 계산하는 SQL 작성
정답을 댓글로 남겨주세요! 😊✨
👉 SQL 날짜 및 시간 함수를 직접 연습해 보면서 익혀보세요! 🚀