postgres夏令时

时间:2017-07-25 21:41:49

标签: postgresql timezone timestamp-with-timezone

我有一个postgres表,其中一列是带时区的时间戳。存储的数据为UTC。我想将此列从UTC转换为不同的时区。如何选择正确的时区,以便在postgres中考虑夏令时?我看了一下pg_timezone_names视图,并且知道postgres支持的实际缩写。我担心的是像加利福尼亚这样的某些州在今年的部分时间里使用PST和PDT。

我怀疑,像select current_time at time zone 'PDT'select current_time at time zone 'PST'这样的代码不会在加利福尼亚全年给出正确的当前时间。我明白了吗?

我知道我可以像select current_time at time zone 'America/New_York'America/Los_Angeles那样做。我希望这样的事情能够考虑到我节目时间明确指定的日光节省时间。这是处理postgres中夏令时问题的唯一正确方法吗?

理想情况下,我不想明确指定位置,而是希望使用postgres timezone缩写。可以这样做吗?

1 个答案:

答案 0 :(得分:0)

我和你有同样的问题。我能提供的最好的是指向我刚刚找到的文档页面。 pg_timezone_names documentation

  

视图pg_timezone_names提供了时区名称列表   SET TIMEZONE认可,以及相关的缩写,   UTC偏移和夏令时状态。与缩写不同   如pg_timezone_abbrevs所示,其中许多名称暗示着一组   夏令时过渡日期规则。因此,相关联   信息在本地DST边界上变化。显示   信息是根据当前的值计算的   CURRENT_TIMESTAMP。

我认为这是有道理的,也是我们所希望的最好的。遗憾的是,时区缩写不包含DST规则,我认为因为没有特定的地理区域可以暗示,因此它们只是UTC偏移的符号。