我加载了一个包含默认时间戳列的表,如'1900-01-01 00:00:00'。表结构很简单
PARTID|GMT_TMSTMP|PAC_TMSTMP
但我需要根据GMT时间内另一列的值将这些时间戳值更改为美国太平洋时间。
我找到了一种方法来为一条记录做到这一点
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关键字之前排除了一些东西。我显然很混乱。
可以这样做吗?
答案 0 :(得分:1)
这将执行单个表更新,以根据同一个表中的另一列设置一个列的值:
UPDATE STG
SET PAC_TMPSTMP = CAST(GMT_TMSTMP AS TIMESTAMP(0)) --AS TIME ZONE 'America Pacific";
这将需要暂时的日记功能,如果这是您不止一次的事情,您可能希望考虑查看MERGE
语句作为替代。