标签: postgresql timezone
我正在使用postgreSQL 10.1。
我有在UTC中创建的日期时间,带有没有时区列的时间戳。 我需要将它们作为正确的英国当地时间(格林尼治标准时间或BST)返回。
我一直在尝试“时区”,无论时区何时发生时间戳,BST / GMT时区似乎都固定为其偏移量。
在时区'UTC'在时区'欧洲/伦敦'似乎给了我我想要的,正确显示了UTC时间戳为GMT或BST(在我尝试过的小样本中),尽管我可以找不到有关夏令时规则的正确记录的时区。
有人可以指出我的正确方向,还是找到可靠的替代方法?
答案 0 :(得分:1)
您的解决方案是正确的:
1 1 0 0
第一个将UTC分配给时间戳,第二个从UTC转换为AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/London' 时区。
AT TIME ZONE 'UTC' AT TIME ZONE 'Europe/London'
Postgres documentation状态:
... PostgreSQL使用广泛使用的IANA(Olson)时区数据库来获取有关历史时区规则的信息。 ...
它还支持同一文档中引用的其他时区形式,但是Europe/London是IANA时区。您可以在IANA时区here的列表中看到它。您还可以通过检查TZDB来源here来查看有关如何定义该时区的详细信息,或者查看伦敦here上更容易理解的时间变化历史。
Europe/London