본문 바로가기
Database

[Oracle] 오라클 NEW_TIME() 함수로 로컬 시간을 GMT로 변환하기

by 코드개미 2025. 6. 5.

오라클 NEW_TIME() 함수로 로컬 시간을 GMT로 변환하기
[Oracle] NEW_TIME

 

다국적 시스템이나 글로벌 서비스를 구축할 때 '시간대(Time Zone)'는 매우 중요한 이슈 중 하나입니다. Oracle의 NEW_TIME() 함수는 두 시간대 간 시간 값을 변환할 수 있는 간단하면서도 유용한 도구입니다. 본 글에서는 NEW_TIME 함수의 사용법, 시간대 코드 목록, 실무 활용 예제 등을 중심으로 자세히 설명합니다.

1. NEW_TIME() 함수란?

NEW_TIME(date, from_tz, to_tz) 함수는 특정 날짜 및 시간을 한 시간대에서 다른 시간대로 변환해 주는 Oracle 내장 함수입니다.

기본 문법

NEW_TIME(date_value, 'FROM_TIMEZONE', 'TO_TIMEZONE')
  • date_value: 변환할 날짜 값 (DATE 타입)
  • FROM_TIMEZONE: 기존 시간대
  • TO_TIMEZONE: 변환 대상 시간대

지원되는 주요 시간대 코드

코드 설명
'PST' Pacific Standard Time (UTC -8)
'MST' Mountain Standard Time (UTC -7)
'CST' Central Standard Time (UTC -6)
'EST' Eastern Standard Time (UTC -5)
'AST' Atlantic Standard Time (UTC -4)
'GMT' Greenwich Mean Time (UTC +0)
'HST' Hawaii Standard Time (UTC -10)

2. 기본 사용 예제

예제 1: GMT → PST 시간대 변환

SELECT NEW_TIME(DATE '2025-06-04', 'GMT', 'PST') AS pst_time FROM dual;
-- 결과: 2025-06-03 16:00:00

예제 2: EST → HST 변환

SELECT NEW_TIME(SYSDATE, 'EST', 'HST') AS hst_time FROM dual;

3. 실무 활용 예제

3-1. 고객 접속 시간대 변환

SELECT user_id,
       login_time,
       NEW_TIME(login_time, 'GMT', 'PST') AS local_time
FROM user_log;

3-2. 다국적 회의 일정 통합

SELECT meeting_id,
       meeting_time,
       NEW_TIME(meeting_time, 'PST', 'EST') AS est_meeting_time
FROM meetings;

3-3. 시스템 로그 정리

SELECT log_id, 
       log_time,
       NEW_TIME(log_time, 'CST', 'GMT') AS gmt_time
FROM server_logs;

4. 유의사항 및 한계

  • NEW_TIME 함수는 DST(서머타임)를 고려하지 않습니다.
  • TIMEZONE 코드는 대문자로 입력해야 합니다.
  • DATE 타입만 지원하며, TIMESTAMP는 사용할 수 없습니다.
  • Oracle 12c 이후에는 FROM_TZ(), TO_TIMESTAMP_TZ() 사용을 권장하는 경향도 있습니다.

예제: TIMESTAMP 사용 시 오류

SELECT NEW_TIME(SYSTIMESTAMP, 'GMT', 'PST') FROM dual;
-- 오류 발생: DATE 타입만 지원

5. 최신 시간대 처리: NEW_TIME 대안

NEW_TIME은 간단하지만 한계가 명확합니다. 보다 정밀한 시간대 처리를 위해 Oracle에서는 다음 함수를 대안으로 제공합니다.

  • FROM_TZ(timestamp, timezone)
  • TO_TIMESTAMP_TZ(char, format)
  • SYS_EXTRACT_UTC()

예제: FROM_TZ + AT TIME ZONE

SELECT FROM_TZ(CAST(SYSTIMESTAMP AS TIMESTAMP), 'UTC') AT TIME ZONE 'US/Pacific' FROM dual;

6. 요약

NEW_TIME() 함수는 Oracle에서 시간대 간 간단한 변환이 필요할 때 유용하게 사용됩니다. DATE 타입 기준의 함수이므로 TIMESTAMP와 DST 지원이 필요하다면 다른 고급 함수를 고려해야 합니다. 단순한 타임존 변환이 필요한 경우 여전히 빠르고 직관적인 선택지입니다.

참고자료