我有一个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缩写。可以这样做吗?
答案 0 :(得分:0)
我和你有同样的问题。我能提供的最好的是指向我刚刚找到的文档页面。 pg_timezone_names documentation
视图pg_timezone_names提供了时区名称列表 SET TIMEZONE认可,以及相关的缩写, UTC偏移和夏令时状态。与缩写不同 如pg_timezone_abbrevs所示,其中许多名称暗示着一组 夏令时过渡日期规则。因此,相关联 信息在本地DST边界上变化。显示 信息是根据当前的值计算的 CURRENT_TIMESTAMP。
我认为这是有道理的,也是我们所希望的最好的。遗憾的是,时区缩写不包含DST规则,我认为因为没有特定的地理区域可以暗示,因此它们只是UTC偏移的符号。