【发布时间】:2013-12-15 00:15:25
【问题描述】:
对于符合 ISO8601 的日期时间
2004-10-19 10:23:54+02
是否可以将具有+02 偏移量的值反映在存储的列值中并在选择时保留?
根据我对appropriate section of the docs Postgres 的阅读,Postgres 的默认行为是转换为 UTC,此时原始偏移量丢失。这当然是我所看到的。
数据是通过无法添加任何特殊 tz 转换的 ORM 访问的,因此我真的需要简单地存储具有原始偏移量的日期时间,并在选择时反映该值。
对于任何急于告诉我这是同一时间实例的人来说,保存这个值对这个数据很重要。
【问题讨论】:
-
是否可以将偏移量存储在单独的列中,这样您就不会受到 Postgres 的摆布?
-
@tadman Ha。试图把它卷成一列。好像也不是什么不合理的事情。
-
数据源是什么?字符串文字?或另一列 - 什么类型?
-
@ErwinBrandstetter 一个经过验证的 ISO8601 字符串。
-
您的格式不符合 ISO 8601。符合标准的格式如下所示:2004-10-19T10:23:54+02:00。 (有关这方面的说明在您的链接文档中。)PostgreSQL 确实以 UTC 存储时间戳。对于时区感知列,它在输入时转换 from 客户端的时区,并在输出时将 to 转换为(可能)不同的客户端时区。应用程序代码不需要进行任何转换,但可能需要设置其时区。 (对于会话,
set time zone 'America/Anchorage';。
标签: postgresql timezone timestamp postgresql-9.3