728x90

CURRENT_DATE() 함수는 Oracle SQL에서 현재 세션의 타임존(Time Zone)을 기준으로 날짜와 시간을 반환하는 함수입니다. 일반적으로 자주 사용되는 SYSDATE()와의 차이점을 이해하고, 정확한 시간 처리가 필요한 환경에서 적절히 활용하는 것이 중요합니다. 이 글에서는 CURRENT_DATE 함수의 개념, 실전 예제, SYSDATE와의 차이, 주의사항을 포괄적으로 설명합니다.
1. CURRENT_DATE 함수란?
CURRENT_DATE 함수는 사용자의 세션 타임존에 따라 현재 날짜와 시간을 반환합니다. 반면 SYSDATE는 데이터베이스 서버의 시스템 시간 기준입니다.
SELECT CURRENT_DATE FROM dual;
결과는 다음과 같은 형식으로 나타납니다: 03-JUN-25 11:42:33 (세션 타임존 기준)
2. CURRENT_DATE 기본 예제
예제 1: 세션 기준 현재 시간 출력
SELECT CURRENT_DATE FROM dual;
예제 2: 포맷 지정 출력
SELECT TO_CHAR(CURRENT_DATE, 'YYYY-MM-DD HH24:MI:SS') AS current_time FROM dual;
예제 3: 오늘 날짜의 데이터 조회
SELECT *
FROM user_activity
WHERE TRUNC(login_time) = TRUNC(CURRENT_DATE);
3. SYSDATE와 CURRENT_DATE의 차이점
| 항목 | SYSDATE | CURRENT_DATE |
|---|---|---|
| 기준 시간 | 서버 OS 시간 | 세션 타임존 기준 |
| 데이터 타입 | DATE | DATE |
| 용도 | 시스템 기준 작업 | 사용자별 시간대 처리가 필요한 경우 |
4. 세션 타임존 확인 및 설정
현재 세션의 타임존 확인
SELECT SESSIONTIMEZONE FROM dual;
타임존 설정 예시
ALTER SESSION SET TIME_ZONE = 'Asia/Seoul';
5. 실무 활용 예제
예제 4: 특정 기간 활동 로그 조회
SELECT *
FROM activity_log
WHERE log_time BETWEEN CURRENT_DATE - 7 AND CURRENT_DATE;
예제 5: 다국적 시스템에서 시간대 처리
-- 유럽 사용자와 한국 사용자의 시간 비교
SELECT CURRENT_DATE AS korea_time,
CURRENT_DATE AT TIME ZONE 'Europe/Berlin' AS berlin_time
FROM dual;
예제 6: 정기 점검 자동화 기준 시간 지정
SELECT *
FROM maintenance_schedule
WHERE schedule_time <= CURRENT_DATE;
6. CURRENT_DATE 주의사항
- 세션 타임존이 명시되지 않으면, DB의 기본값을 따릅니다.
- 시간 비교 시 항상
TRUNC()또는TO_CHAR()로 포맷을 명확히 지정하세요. - 다중 사용자 환경에서는
SYSDATE보다CURRENT_DATE가 정확한 비교를 가능하게 합니다.
7. 성능 팁
- CURRENT_DATE는 DATE 타입이므로, DATE 칼럼과의 직접 비교가 가능합니다.
- 날짜 인덱스가 설정된 칼럼을 조건절에 사용할 경우
TRUNC()사용은 인덱스를 무력화할 수 있습니다. - 필요한 경우
BIND 변수또는 저장된 DATE 값을 활용한 비교가 바람직합니다.
8. 결론
Oracle의 CURRENT_DATE() 함수는 세션 시간대 기준으로 현재 날짜와 시간을 반환하는 기능을 제공하여, 사용자 맞춤형 시간 처리에 매우 적합합니다. 특히 글로벌 환경이나 멀티 타임존 기반 애플리케이션에서 그 진가를 발휘합니다. SYSDATE와의 차이점 및 주의사항을 정확히 이해하고 활용한다면, 보다 안정적이고 정확한 SQL 시스템 운영이 가능해집니다.
9. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle SQL Language Reference 21c
- 멀티타임존 기반 데이터 처리 실무 - 김상형 저
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법 (0) | 2025.06.04 |
|---|---|
| [ORACLE] CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기 (0) | 2025.06.04 |
| [ORACLE] SYSDATE() 현재 날짜와 시간 조회하는 가장 쉬운 방법 (0) | 2025.06.04 |
| [ORACLE] CHR() 함수란? 아스키 문자 처리 실전 활용 법 (0) | 2025.06.04 |
| [ORACLE] ASCII() 사용법과 예제 : 문자 → 숫자로 변환하는 기본 함수 (0) | 2025.06.04 |