2014-12-22 55 views
0

我想用MLOAdTeradata的14:時間戳和時區的問題

的data.txt

1,20030101020000.000000,20030101020000.000000 -08:00 

表高清加載data.txt

create table test 
(sno varchar(3), 
    ts_name TIMESTAMP(6) , 
    ts_zonename TIMESTAMP(6) WITH TIME ZONE 
); 

M負載插入:

insert into test (sno,ts_name,ts_zonename) 
    values (:in_sno, 
      CAST(:in_ts_name AS TIMESTAMP( 6) FORMAT 'YYYYMMDDHHMISSDS( 6)'), 
      CAST(:in_ts_zonename AS TIMESTAMP( 6) FORMAT 'YYYYMMDDHHMISSDS( 6)') 
        ); 

mload成功。

當我查詢

SEL EXTRACT(TIMEZONE_HOUR FROM ts_zonename) 
     FROM test; 

通過BTEQ

返回0

難道不應該返回-8?

我在Teradata上14

回答

2

您鑄造到下降的時區,檢查插入ts_zonename實際數據的時間戳。

你需要轉換爲TIMESTAMP WITH TIME ZONE:

CAST(:in_ts_zonename AS TIMESTAMP( 6) WITH TIME ZONE FORMAT 'YYYYMMDDHHMISSDS(F)Z') 

,如果時間區之前有一個空間,你需要的格式更改爲'YYYYMMDDHHMISSDS(F)BZ',或切換到Oracle的TO_TIMESTAMP_TZ在TD14,這是一個更靈活一點就缺少/額外的空白:

TO_TIMESTAMP_TZ(ts_zonename, 'YYYYMMDDHH24MISS.FF6TZH:TZM') 
+0

感謝Doneth,CAST(:in_ts_zonename AS TIMESTAMP(6)TIME ZONE FORMAT 'YYYYMMDDHHMISSDS(6)Z')。這也爲我工作,當我刪除空間在-8:00之前 – user2711819