본문 바로가기
Database

[ORACLE] SYSTIMESTAMP()로 타임 존 포함 현재 시각 가져오는 방법

by Engineer J 2025. 6. 4.

오라클 SYSTIMESTAMP()로 타임존 포함 현재 시각 가져오는 방법
[Oracle] SYSTIMESTAMP

 

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
  • 시간 함수 실무 정리 강의 - 오라클 마스터 과정