Teradata 14:带有时区问题的时间戳

时间:2014-12-22 16:10:35

标签: teradata

我想使用data.txt

加载MLOAd

data.txt中

1,20030101020000.000000,20030101020000.000000 -08:00

表格def:

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

Mload insert:

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上

1 个答案:

答案 0 :(得分:2)

你去了一个删除时区的TIMESTAMP,检查插入ts_zonename的实际数据。

你需要施放到TIMESTAMP WITH TIME ZONE:

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

如果时区前有空格,您需要将格式更改为'YYYYMMDDHHMISSDS(F)BZ'或在TD14中切换到Oracle TO_TIMESTAMP_TZ,这样会更灵活一点关于遗失/额外的空白:

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