본문 바로가기
Database/Oracle

[ORACLE] CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기

by Papa Martino V 2025. 6. 4.
728x90

오라클 CURRENT_TIMESTAMP() 함수로 정확한 현재 시간 가져오기
[Oracle] CURRENT_TIMESTAMP

 

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