【问题标题】:Postgres UTC timezone vs local timezonePostgres UTC 时区与本地时区
【发布时间】:2018-01-02 19:36:48
【问题描述】:

我使用的是 PostgreSQL 10。我在 3 个表中有几个 timestamp with timezone 列。

我是否应该在postgresql.conf 中使用UTC 作为我的默认时区,并在每个会话中不断转换为Europe Athens

或者将Europe Athens 作为我的默认值,永远不必转换,但如果其他应用程序访问同一数据库,则必须转换到他们的时区?

什么更聪明?我想我必须考虑在会话中设置时区是否会影响查询速度。

【问题讨论】:

    标签: postgresql datetime timezone timestamp timestamp-with-timezone


    【解决方案1】:

    我应该在 postgresql.conf 中使用 UTC 作为我的默认时区吗? 每次会议都在不断地向欧洲雅典转变?

    不,这是浪费精力,因为无论您为默认时区选择什么,数据库都以 UTC 存储时间戳。

    对于带时区的时间戳,内部存储的值始终在 UTC(通用协调时间,传统上称为格林威治标准时间) 时间,格林威治标准时间)。指定了明确时区的输入值是 使用该时区的适当偏移量转换为 UTC。如果 输入字符串中没有说明时区,则假定为 在系统的TimeZone参数所指示的时区,并且是 使用时区的偏移量转换为 UTC。

    来源:https://www.postgresql.org/docs/10/static/datatype-datetime.html

    【讨论】:

    • 我在想,如果我将默认值设置为europe/athens,然后另一个应用程序访问数据库,则需要进行 2 次转换才能实现,例如从雅典到 UTC 到苏黎世的 europe/zurich。但是根据您(和手册)的说法,它将是UTC->雅典->UTC->苏黎世。正确的?所以最好把它留在 UTC 中,任何访问它的人都会为会话设置一个时区。
    猜你喜欢
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 2011-09-16
    • 2016-01-21
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 2013-08-04
    相关资源
    最近更新 更多