【问题标题】:Postgresql date timezone issuePostgresql日期时区问题
【发布时间】:2016-12-14 17:14:33
【问题描述】:

我有一个带有时区的列类型时间戳的 pg 数据库。我插入了以下日期:

2016-08-01 00:00:00 GMT

但是,在数据库中,它显示为:

2016-07-31 20:00:00-04

有人知道会发生什么吗?

提前致谢!

【问题讨论】:

  • 您确定输入会导致该显示吗?几个小时的差异将是一个时区问题(因此是-04),但从 08-16 到 07-31 有点多。顺便说一句,当有一个完全可用的日期类型时,为什么要使用时间戳列来表示日期?
  • 嗨 - 抱歉,我粘贴了错误的输入,刚刚更新了我的问题。
  • 所以只是一个四小时的时区调整,相同的时间戳但显示在 -04 时区。
  • postgres default timezone的可能重复

标签: postgresql date timezone


【解决方案1】:

尽管有这个名字,TIMESTAMP WITH TIME ZONE 实际上并不存储时区。它使用会话的时区标准化为 UTC,并存储 UTC。在检索时,它会从 UTC 转换回会话时区。

您可以使用SET TIME ZONE 命令更改会话时区。最好使用the standard IANA time zone identifiers。例如:

SET TIME ZONE 'Europe/Paris'

SET TIME ZONE 'UTC'

也可以改用TIMESTAMP [WITHOUT TIME ZONE] 类型,它不进行任何转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-21
    • 2015-05-24
    • 1970-01-01
    • 2014-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-28
    相关资源
    最近更新 更多