【发布时间】:2019-03-05 15:45:35
【问题描述】:
我正在尝试转换列,并将数据保留在指定时区。我有一个脚本,但最后在SELECT 上出错。
ALTER TABLE schema.table
ALTER COLUMN column_date TYPE TIMESTAMP WITH TIME ZONE
USING column_date AT TIME ZONE (SELECT value FROM schema.table WHERE id = 'timezone');
ERROR: cannot use subquery in transform expression
我存储了时区,但试图将其拉回以应用于脚本是一个挑战。我知道我可以简单地将时区硬编码为“EST|CST|PST”等,但我有多个需要应用的数据库(每个数据库有多个更改),因此最后需要SELECT。有没有办法做到这一点?
我已经就这个主题提出了几个问题;虽然有些接近,但它们并不完全满足需求(如果这是重复的,我很抱歉,我花了一段时间寻找答案)。
[已解决]:使用 2 个单独的查询
ALTER TABLE schema.table
ALTER COLUMN column_date TYPE TIMESTAMP WITH TIME ZONE;
UPDATE schema.table
SET column_date = column_date AT TIME ZONE
(SELECT value FROM schema.table WHERE id = 'timezone');
【问题讨论】: