SYSTIMESTAMP()
함수는 Oracle SQL에서 고정밀 시간 값을 제공하는 함수로, 나노초 단위까지 지원하며 타임존 정보까지 포함하는 TIMESTAMP WITH TIME ZONE 타입을 반환합니다. 이 글에서는 SYSTIMESTAMP 함수의 정의, 주요 특징, SYSDATE 및 CURRENT_TIMESTAMP와의 차이점, 실전 예제 등을 정리합니다.
1. SYSTIMESTAMP 함수란?
SYSTIMESTAMP()는 Oracle 서버가 위치한 OS 시스템의 시간과 타임존 정보를 기준으로 고정밀 시간을 반환하는 함수입니다.
SELECT SYSTIMESTAMP FROM dual;
예시 결과: 03-JUN-25 15.10.22.123456 AM ASIA/SEOUL
2. 주요 특징
- 반환 데이터 타입:
TIMESTAMP WITH TIME ZONE
- 서버 OS 시간 기준
- 초 단위 정밀도 최대 9자리 소수점 지원
- 타임존 정보 포함
3. SYSTIMESTAMP 기본 예제
예제 1: 기본 사용
SELECT SYSTIMESTAMP FROM dual;
예제 2: 포맷 지정 출력
SELECT TO_CHAR(SYSTIMESTAMP, 'YYYY-MM-DD HH24:MI:SS.FF TZR') AS sys_time FROM dual;
예제 3: 초 단위 정밀도 추출
SELECT EXTRACT(SECOND FROM SYSTIMESTAMP) AS seconds FROM dual;
4. 시간 함수 비교
함수 | 기준 시간 | 반환 타입 | 타임존 포함 |
---|---|---|---|
SYSDATE | 서버 OS | DATE | 미포함 |
CURRENT_TIMESTAMP | 세션 시간대 | TIMESTAMP WITH TIME ZONE | 포함 |
SYSTIMESTAMP | 서버 OS | TIMESTAMP WITH TIME ZONE | 포함 |
5. 실무 활용 예제
예제 4: 정밀 로그 기록
INSERT INTO audit_log (user_id, log_time)
VALUES ('admin', SYSTIMESTAMP);
예제 5: 최근 5초 이내 이벤트 탐지
SELECT *
FROM sensor_data
WHERE event_time >= SYSTIMESTAMP - INTERVAL '5' SECOND;
예제 6: 타임존별 시간 변환
SELECT SYSTIMESTAMP AT TIME ZONE 'UTC' AS utc_time,
SYSTIMESTAMP AT TIME ZONE 'Asia/Tokyo' AS tokyo_time
FROM dual;
6. 성능과 주의사항
- SYSTIMESTAMP는 고정밀 연산을 위해 CPU 리소스를 더 사용할 수 있습니다.
- DATE 타입 칼럼과 비교 시 암시적 형 변환 주의
- 복잡한 타임존 연산 시 서버 시간 기준이라는 점을 명확히 해야 함
7. 결론
SYSTIMESTAMP()
함수는 Oracle SQL에서 서버 기준의 정밀한 시간과 타임존 정보가 필요한 작업에 매우 유용합니다. SYSDATE
, CURRENT_TIMESTAMP
등과의 차이를 정확히 이해하고 목적에 맞게 선택해 사용하면 보다 안정적이고 정확한 시간 기반 로직을 구현할 수 있습니다.
8. 참고자료
- Oracle 공식 문서: https://docs.oracle.com
- Oracle Database SQL Language Reference 21c
- 시간 함수 실무 정리 강의 - 오라클 마스터 과정
'Database' 카테고리의 다른 글
[ORACLE] TO_CHAR() 함수로 날짜를 문자열로 변환하는 실무 팁과 예제 (0) | 2025.06.04 |
---|---|
[ORACLE] TO_DATE() 함수로 문자열을 날짜로 변환하는 가장 쉬운 방법 (0) | 2025.06.04 |
[ORACLE] CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기 (0) | 2025.06.04 |
[ORACLE] CURRENT_DATE() 함수로 세션 기준 날짜 쉽게 확인하기 (0) | 2025.06.04 |
[ORACLE] SYSDATE() 현재 날짜와 시간 조회하는 가장 쉬운 방법 (0) | 2025.06.04 |