Why doesn't the timezone changes in these SQL expressions?
我正在尝试更新其中一个表的某个字段中的时区。 我已经尝试过在一些SO帖子中看到过的几种方式,但似乎没有什么能改变实际的时区价值。
有人可以解释为什么......
1 2 3 4 5 | SELECT now(), EXTRACT(timezone FROM now()) * INTERVAL '1sec', (now()::TIMESTAMP || 'PST8PDT')::timestamptz, EXTRACT(timezone FROM (now()::TIMESTAMP || 'PST8PDT')::timestamptz) * INTERVAL '1sec' |
所有这些字段都有相同的时区? 福塔雷萨/巴西的结果是:
1 | 2018-10-29 14:52:04.55495-03 | -03:00:00 | 2018-10-29 18:52:04.55495-03 | -03:00:00" |
为什么? 最后2个值不应该有PST时区吗?
如何实际更改
您无法更改时区,因为数据类型
当前会话的
例:
1 | SET timezone = 'PST8PDT'; |
然后重试您的测试。
有关:
- 数据类型"带时区的时间戳"中的时区存储
- 在PostgreSQL中设置timestamp列的时区
- 在Rails和PostgreSQL中完全忽略时区