728x90

Oracle SQL에서 시간 정보를 정확히 다루기 위해서는 CURRENT_TIMESTAMP() 함수의 이해가 필수입니다. 이 함수는 세션 타임존을 고려한 정밀한 시간 값을 TIMESTAMP WITH TIME ZONE 타입으로 반환해 주며, 글로벌 서비스를 운영하는 시스템에서는 특히 중요합니다. 이 글에서는 CURRENT_TIMESTAMP의 개념, 사용법, SYSDATE 및 CURRENT_DATE와의 차이, 다양한 예제를 정리합니다.
1. CURRENT_TIMESTAMP 함수란?
CURRENT_TIMESTAMP() 함수는 현재 세션의 시간대(Time Zone)를 기준으로 현재 날짜와 시간 정보를 반환하는 Oracle의 내장 함수입니다.
SELECT CURRENT_TIMESTAMP FROM dual;
결과는 다음과 같은 형식으로 반환됩니다:03-JUN-25 15.10.22.456789 AM +09:00
2. 데이터 타입 및 특징
- 반환 타입:
TIMESTAMP WITH TIME ZONE - 세션의 타임존을 반영
- 초 단위 정밀도 지원 (최대 9자리 소수)
3. CURRENT_TIMESTAMP 기본 예제
예제 1: 현재 세션 기준 시간 확인
SELECT CURRENT_TIMESTAMP FROM dual;
예제 2: 포맷 지정 출력
SELECT TO_CHAR(CURRENT_TIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF TZR') AS current_time FROM dual;
예제 3: 현재 시간의 정밀도 확인
SELECT EXTRACT(SECOND FROM CURRENT_TIMESTAMP) AS seconds FROM dual;
4. 다른 시간 함수와의 차이점
| 함수 | 시간 기준 | 데이터 타입 | 타임존 반영 |
|---|---|---|---|
| SYSDATE | 서버 OS | DATE | 반영 안 됨 |
| CURRENT_DATE | 세션 타임존 | DATE | 부분 반영 |
| CURRENT_TIMESTAMP | 세션 타임존 | TIMESTAMP WITH TIME ZONE | 완전 반영 |
5. 세션 타임존 확인 및 변경
SELECT SESSIONTIMEZONE FROM dual;
ALTER SESSION SET TIME_ZONE = 'Asia/Seoul';
6. 실무 활용 예제
예제 4: 최근 10분 이내 데이터 조회
SELECT *
FROM login_log
WHERE login_time >= CURRENT_TIMESTAMP - INTERVAL '10' MINUTE;
예제 5: 타임존별 시간 비교
SELECT CURRENT_TIMESTAMP AS local_time,
CURRENT_TIMESTAMP AT TIME ZONE 'UTC' AS utc_time,
CURRENT_TIMESTAMP AT TIME ZONE 'America/New_York' AS ny_time
FROM dual;
예제 6: 로그 테이블 시간 기록
INSERT INTO audit_log(user_id, action_time)
VALUES ('admin', CURRENT_TIMESTAMP);
7. 성능과 주의사항
- CURRENT_TIMESTAMP는 TIMESTAMP 타입이므로, DATE 타입 칼럼과 직접 비교할 때는 암시적 변환 주의
- 인덱스 칼럼이 DATE일 경우, CAST를 활용한 명시적 변환이 필요할 수 있음
- 다중 사용자 환경에서는 CURRENT_TIMESTAMP가 세션 시간 기준으로 작동하므로, 시간 비교 시 정확한 로직 설계 필요
8. 결론
CURRENT_TIMESTAMP() 함수는 Oracle SQL에서 정밀한 시간 정보와 정확한 타임존 처리를 제공하는 강력한 도구입니다. 특히 전 세계 사용자 기반 애플리케이션이나 시간대 변환이 필요한 시스템에서 꼭 필요한 함수입니다. SYSDATE, CURRENT_DATE와의 차이를 잘 이해하고, 상황에 맞게 사용하면 더 정확하고 안정적인 SQL 개발이 가능합니다.
9. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle SQL Language Reference 21c
- 멀티타임존 및 TIMESTAMP 함수 실무 가이드 - 김상형 저
728x90
'Database > Oracle' 카테고리의 다른 글
| [ORACLE] TO_DATE() 함수로 문자열을 날짜로 변환하는 가장 쉬운 방법 (0) | 2025.06.04 |
|---|---|
| [ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법 (0) | 2025.06.04 |
| [ORACLE] CURRENT_DATE() 함수로 세션 기준 날짜 쉽게 확인하기 (0) | 2025.06.04 |
| [ORACLE] SYSDATE() 현재 날짜와 시간 조회하는 가장 쉬운 방법 (0) | 2025.06.04 |
| [ORACLE] CHR() 함수란? 아스키 문자 처리 실전 활용 법 (0) | 2025.06.04 |