기술 정보
home
채널 소개
home

DB에서 서버 시간 변경 없이 지역 시간을 독립적으로 설정하는 방법

문서 유형
장애 해결
분야
관리/환경설정
키워드
timezone
timestamp
2 more properties

현상

DB에서 서버 시간을 변경하지 않고 설정된 지역의 시간을 서버와 독립적으로 변경하는 과정에서 관련 오류가 발생합니다.
아래 쿼리를 실행하Tibero : TBR-5104: Invalid timezone region value같은 오류가 발생합니다.
select timestamp '2000-10-28 11:24:54 PM America/New_York' from dual;
SQL
복사
또한, 아래와 같이 테이블을 생성하고 데이터를 삽입할 때BR-5042: Invalid decimal input. 오류가 확인됩니다.
create table t99277 ( col1 timestamp(0), col2 timestamp(0) with time zone ) ; insert into t99277 values ('2000-10-28 11:24:54 PM', '2000-10-28 11:24:54 PM America/New_York');
SQL
복사

원인

ANSI 리터럴 형태의 timezone timestamp는 format이 고정되어 있어 ALTER 명령으로 지정한 포맷 설정이 적용되지 않기 때문에 에러가 발생합니다.

해결

NLS_TIMESTAMP_FORMAT과 NLS_TIMESTAMP_TZ_FORMAT을 수정한 후 실행하면, 정상적으로 1행이 삽입되는 것을 확인할 수 있습니다.
alter session set NLS_DATE_LANGUAGE=AMERICAN; alter session set NLS_TIMESTAMP_FORMAT="YYYY-MM-DD HH:MI:SS AM"; alter session set NLS_TIMESTAMP_TZ_FORMAT="YYYY-MM-DD HH:MI:SS AM TZR";
SQL
복사
정상 삽입 확인 예시
SQL> select *from t99277; COL1 ----------------------------------------------------------------- COL2 -------------------------------------------------------------------------------- 2000-10-28 11:24:54 PM 2000-10-28 11:24:54 PM America/New_York 1 row selected.
SQL
복사