PostgreSQL UTC到英国当地时间

时间:2019-04-03 14:49:56

标签: postgresql timezone

我正在使用postgreSQL 10.1。

我有在UTC中创建的日期时间,带有没有时区列的时间戳。 我需要将它们作为正确的英国当地时间(格林尼治标准时间或BST)返回。

我一直在尝试“时区”,无论时区何时发生时间戳,BST / GMT时区似乎都固定为其偏移量。

在时区'UTC'在时区'欧洲/伦敦'似乎给了我我想要的,正确显示了UTC时间戳为GMT或BST(在我尝试过的小样本中),尽管我可以找不到有关夏令时规则的正确记录的时区。

有人可以指出我的正确方向,还是找到可靠的替代方法?

1 个答案:

答案 0 :(得分:1)

您的解决方案是正确的:

1
1
0
0

第一个将UTC分配给时间戳,第二个从UTC转换为AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/London' 时区。

Postgres documentation状态:

  

... PostgreSQL使用广泛使用的IANA(Olson)时区数据库来获取有关历史时区规则的信息。 ...

它还支持同一文档中引用的其他时区形式,但是Europe/London是IANA时区。您可以在IANA时区here的列表中看到它。您还可以通过检查TZDB来源here来查看有关如何定义该时区的详细信息,或者查看伦敦here上更容易理解的时间变化历史。