【发布时间】:2016-06-20 03:13:50
【问题描述】:
我有一张表,用于存储带时区的 iso 日期。我意识到日期应该“始终”存储为 utc,但我对该规则有一个例外。时间戳与它们运行的服务器没有任何关系。我希望能够像这样存储 iso 日期: 2016-03-06T01:15:52-06:00 无论服务器的时区如何,我都希望时间戳返回为: 2016-03-06T01:15:52-06:00
目前,如果我插入 iso 日期,它会自动将其转换为服务器时区。我上面的日期被转换为: 2016-03-06 07:15:52+00(服务器是UTC)
我唯一能想到的是将时区偏移存储在单独的列中,将我的日期存储为 utc,然后使用偏移列进行转换,非常混乱。当然有一种方法可以将我的日期存储在一个列中并按照最初创建的方式将其取出?
【问题讨论】:
-
当然有一种方法可以将我的日期存储在一个列中,并按照最初创建的方式将其取出:是的,
text类型。 -
听起来好像你在使用
timestamp with time zone。如果您不希望它转换,请改用timestamp -
@DanielVérité 是的,但这会阻止我使用任何日期函数。
-
@a_horse_with_no_name 我想存储我的时区。 “无时区”完全丢弃任何时区。 postgres 中似乎没有一种数据类型可以真正存储时间戳和任意时区。
-
timestamp with time zone不存储时区。如果需要,请使用timestamp并将时区存储在单独的列中。
标签: postgresql date datetime