본문 바로가기
Database/Oracle

[ORACLE] TZ_OFFSET() 함수 설명 및 시간대 오프셋 구하는 팁

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

오라클 TZ_OFFSET() 함수 설명 및 시간대 오프셋 구하는 팁
[Oracle] TZ_OFFSET

 

오라클에서 시간대(time zone)를 다룰 때 TZ_OFFSET 함수는 매우 유용한 도구입니다. 이 함수는 주어진 시간대의 오프셋(offset), 즉 UTC 기준의 시간차를 반환합니다. 시간대 기반의 로직이 필요한 개발자라면 반드시 숙지해야 할 함수입니다.

1. TZ_OFFSET 함수란?

TZ_OFFSET 함수는 오라클 SQL에서 시간대 이름을 입력받아 그 시간대의 UTC 오프셋을 문자열 형식('+09:00' 등)으로 반환합니다.

📌 문법(Syntax)

TZ_OFFSET(timezone_name)

✔️ 매개변수 설명

  • timezone_name: 시간대 이름 또는 지역 (예: 'Asia/Seoul', 'US/Pacific')

2. 기본 사용 예제

SELECT TZ_OFFSET('Asia/Seoul') FROM DUAL;
-- 결과: +09:00
SELECT TZ_OFFSET('US/Pacific') FROM DUAL;
-- 결과: -07:00 (서머타임 적용 시)

3. CURRENT_SESSION TIME ZONE과의 비교

현재 세션의 시간대와 오프셋을 함께 확인하는 것이 중요합니다.

SELECT SESSIONTIMEZONE, TZ_OFFSET(SESSIONTIMEZONE) FROM DUAL;

이 쿼리를 통해 현재 세션의 시간대와 그 오프셋을 동시에 확인할 수 있습니다.

4. 실무 활용 시나리오

  • 다국적 애플리케이션에서 사용자별 시간대 표시
  • 로그 기록 시 UTC 변환 기준 설정
  • 스케줄 기반의 이벤트 발생 처리

5. 자주 사용하는 시간대 예제

지역 입력값 오프셋 예시
대한민국 'Asia/Seoul' +09:00
미국 서부 'US/Pacific' -08:00 / -07:00 (DST)
영국 'Europe/London' +00:00 / +01:00 (DST)
일본 'Asia/Tokyo' +09:00

6. 시간대 목록 확인 방법

SELECT DISTINCT tzname FROM v$timezone_names ORDER BY tzname;

위 쿼리를 통해 오라클에서 지원하는 전체 시간대 목록을 확인할 수 있습니다.

7. 예외 및 유의사항

  • 시간대 이름은 대소문자 구분 없이 입력 가능하나, 정확한 명칭을 사용하는 것이 좋습니다.
  • Daylight Saving Time(서머타임)에 따라 오프셋이 변동될 수 있으므로 날짜와 함께 사용하는 것을 고려해야 합니다.

8. 시간대와 TIMESTAMP 변환 조합

TZ_OFFSET은 단독으로도 유용하지만, FROM_TZ, CAST, AT TIME ZONE과 같이 사용되면 더욱 강력합니다.

SELECT FROM_TZ(CAST(SYSTIMESTAMP AS TIMESTAMP), 'Asia/Seoul') AT TIME ZONE 'UTC'
FROM DUAL;

이 쿼리는 시스템 타임스탬프를 UTC 기준으로 변환한 예시입니다.

9. 마무리

Oracle의 TZ_OFFSET 함수는 시간대를 기준으로 한 데이터 관리에서 매우 중요한 역할을 합니다. 글로벌 서비스를 운영하는 개발자나 DBA라면 필수적으로 이해하고 활용해야 할 함수입니다. 위의 예제들을 실습하며 직접 적용해 보시기 바랍니다.

📚 참고 자료

728x90