현상
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
복사