2016-08-09 4 views
0

시간 소인의 데이터를 존으로 시간 소인하는 데 도움이 필요합니다.오라클 데이터베이스 시간 소인 시간대가있는 시간 소인

create table foo (tswtz TIMESTAMP WITH TIME ZONE); 

SQL:>insert into foo values(systimestamp) 

TSWTZ         
--------------------------------------- 
09-08-16 11:39:21.199780000 AM +05:30 

create table foo1 (test_dt timestamp) 

insert into foo1 values(systimestamp) 
TEST_DT       
-------------------------------- 
09-08-16 11:40:55.242754000 AM 

이제 내가 foofoo1의 값을 삽입해야 시나리오가있다. 나는 아래의 명령을 사용하고,

insert into foo (TSWTZ) (select CAST(TEST_DT AS TIMESTAMP WITH TIME ZONE) from foo1) 

값 선택은

09-08-16 11:40:55.242754000 AM ASIA/CALCUTTA 

로 표시하지만 당신이하는 방법에 대한 좀 도와 주시겠습니까

09-08-16 11:40:55.242754000 AM +05:30. 

로 표시해야 그건 명령을 변경하지 않고?

답변

0

결과를 얻으려면 NLS 매개 변수를 변경해야합니다. 뿐만 아니라 [https://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm][1]

시도 설정 오라클 설명서를 읽어 보시기 바랍니다 :

NLS_TIMESTAMP_TZ_FORMAT = DD-MON-RR HH.MI.SSXFF AM TZR 
and NLS_TIMESTAMP_FORMAT = DD-MON-RR HH.MI.SSXFF AM 
and NLS_TIME_TZ_FORMAT = HH.MI.SSXFF AM TZR 
and NLS_TIME_FORMAT = HH.MI.SSXFF AM 
0

기능을 SYSTIMESTAMP 반환 데이터베이스 서버 운영 체제의 시간대에서 현재 시간을, 귀하의 경우 +05:30에.

TIMESTAMP (표준 시간대 정보 없음)에서 TIMESTAMP WITH TIME ZONE으로 변환하면 명시 적으로 시간대를 지정하지 않으면 오라클이 SESSIONTIMEZONE을 사용합니다.

분명히 귀하의 경우 SESSIONTIMEZONEAsia/Calcutta으로 설정됩니다. 위해

당신이 중 하나를

ALTER SESSION SET TIME_ZONE = '+05:30'; 

또는

SELECT CAST((TEST_DT AT TIME ZONE '+05:30') AS TIMESTAMP WITH TIME ZONE) 
FROM ... 

참고 할 수있는 결과를 원하는 얻을, 시간대 Asia/Calcutta 오프셋하지만 동일 +05:30 다릅니다. Asia/Calcutta과 같은 지역 이름은 일광 절약 시간 (아시아/캘커타에는 적용되지 않음)을 고려하고 +05:30과 같은 UTC 오프셋은 일광 절약 시간을 고려하지 않습니다.

관련 문제