如何在 postgresql 8.3 中知道时间戳的时区

2024-04-29

我正在使用 postgresql 8.3,我想知道特定时间戳(表中的列)的时区。

在文档中我找到了关键字“时区” http://www.postgresql.org/docs/8.3/static/functions-datetime.html

但我不明白如何将它应用到表的列中。是否可以 ?


我假设你有一个名为ct其中有类型TIMESTAMPTZ在表中t。然后你可以使用:

SELECT EXTRACT(TIMEZONE FROM ct) FROM t;

获取时区的偏移量(以秒为单位)。它给你3600 from UTC/GMT这意味着要么GMT+1, CET管他呢。返回的值取决于您的TIMEZONE环境。

示例(我住在德国,实际时区是GMT+1/CET):

test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 18:00:00+01

test=# set timezone to 'gmt';
SET
test=# select '2008-01-01 12:00:00 GMT+5'::timestamptz;
      timestamptz       
------------------------
 2008-01-01 17:00:00+00

正如您所看到的,它总是输出配置时区中的任何内容。所以你会得到的偏移量EXTRACT(TIMEZONE FROM ...)取决于你的TIMEZONE环境。给出的时区INSERT迷失了,因为不值得被拯救。重要的是一切都是正确的,而不应该取决于TIMEZONE环境。 PostgreSQL 在这方面做得很好。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 postgresql 8.3 中知道时间戳的时区 的相关文章

随机推荐