0

我加载了一个包含默认时间戳列的表,例如“1900-01-01 00:00:00”。表结构简单

PARTID|GMT_TMSTMP|PAC_TMSTMP

但是我需要根据格林威治标准时间的另一列的值将这些时间戳值更改为美国太平洋时间。

我想出了一种方法来做一张唱片

UPDATE STG SET PAC_TMSTMP=CAST(GMT_TMSTMP AS TIMESTAMP(0)) AT TIME ZONE 'America Pacific' WHERE PARTID='0369526767';

该表包含超过一百万条记录,我认为进行自联接,我可以像这样更新每条记录

UPDATE    STG      SET
PAC_TMSTMP =CAST(GMT_TMSTMP AS TIMESTAMP(0)) AT TIME ZONE 'America Pacific'
FROM    STG  A    JOIN    STG  B    ON      A.PARTID = B.PARTID

Teradata 给了我一个错误,并在 FROM 关键字之前排除了一些东西。我显然是搞混了。

这可以做到吗?

4

1 回答 1

1

这将执行单个表更新,以根据同一表中的另一列设置一列的值:

 UPDATE STG
    SET PAC_TMPSTMP = CAST(GMT_TMSTMP AS TIMESTAMP(0)) --AS TIME ZONE 'America Pacific";

这将需要临时日记,如果这是您不止一次做的事情,您可能希望考虑将MERGE声明作为替代方案。

于 2013-08-27T13:38:44.240 回答