PostgreSQL:将没有时区的时间戳转换为特定时区不起作用

PostgreSQL : Converting timestamp without time zone to a specific timezone not working

我正在尝试将 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。我如何指定查询以使用德国时区进行查询。谢谢你。

存储在 table 中的时间戳的时区是什么?也就是说,如果table中有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';

不要忘记您可以 运行 在事务中执行上述操作,这样您就可以在提交结果之前检查结果(当然这会锁定整个 table 并阻止所有其他table).

的并发查询