我正在尝试将Postgres中的列从Timestamp without time zone
迁移到timestamp with time zone
。我想在德国时间这样做,所以我使用了以下查询:
alter table table_name alter column uploaddate type TIMESTAMP WITH TIME ZONE USING uploaddate at time zone 'UTC+01:30';
不幸的是,它无法正常工作,它正在添加2015-06-30 07:30:48.785+05:30
。我现在在印度,这是+5.30。如何指定查询以使用德语时区执行此操作。谢谢。
答案 0 :(得分:1)
表中存储的时间戳的时区是多少?也就是说,如果表格中有2016-09-22 07:30
这样的值,那么在07:30
的时区中是什么?这是您要使用的时区,而不是当前的本地时区。所以例如如果所有时间戳都以德语时区表示,您应该执行以下操作:
alter table table_name
alter column uploaddate type TIMESTAMP WITH TIME ZONE
USING uploaddate at time zone 'Europe/Berlin';
不要忘记您可以在事务中运行上述内容,以便在提交之前检查结果(当然这将锁定整个表并阻止该表的所有其他并发查询)。