代码之家  ›  专栏  ›  技术社区  ›  darkhorse

在PostgreSQL数据库中存储时区感知的理想方法是什么?

  •  0
  • darkhorse  · 技术社区  · 6 年前

    我想在我的SQL数据库中存储日期时间字符串。其中一些可能是时区感知的。我有三种存储方法:

    1. 将它们存储为不带时区的字符串,例如 '1995-01-13 12:41:04.231132' ,并存储时区偏移量 '+0000' 在单独的列中。

    2. 将它们存储为不带时区的字符串,例如 '1995-01-13 12:41:04.231132' ,并存储时区名称 'Africa/Cairo' 在单独的列中。

    3. 将整个对象存储为字符串: '1995-01-13 12:41:04.231132+0000' ,附加偏移量。

    这样做的理想方法是什么?

    注意:我使用的是PostgreSQL数据库。

    额外的细节:事实上,我将这些日期时间存储在PostgreSQL数据库的JSONB列中,因此在查询和排序期间,我需要使用适当的数据类型来强制转换这些日期时间。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Sentinel    6 年前

    以上都不是,使用 timestamp with time zone 数据类型。它可以以偏移量、时区名称或缩写形式处理时区信息。