【发布时间】:2014-07-25 06:10:07
【问题描述】:
以下查询
SELECT the_date FROM date_trunc('day', timestamp with time zone
'2001-01-1 00:00:00+0100') as the_date
结果
the_date
2000-12-31 00:00
有没有办法告诉 date_trunc 根据输入的时区进行日/月/年转换?
预期输出为:2001-01-1 00:00+0100
【问题讨论】:
-
我认为你误解了
timestamp with time zone。 (这很常见,对于类型的实际语义来说,这是一个愚蠢的名称)。timestamp with time zone实际上不是带有时区的时间戳。它是一个存储在 UTC 中的时间戳,它在 I/O 上与客户端的TimeZone相互转换。 -
您的问题中有一个错误。您所谓的“日期”(
the_date)实际上具有timestamp的形式,并且实际上应该是timestamptz,因为显示的查询会返回它。我们不知道这个结果是怎么做的。此外,在不知道您当地时区的情况下,时间戳的含义是不明确的。 -
@ErwinBrandstetter 我同意“the_date”在这种情况下具有误导性。但是我的本地时区与这个问题有什么关系?
-
timestamp值的含义取决于您在客户端中当前的时区设置。这可能会有所帮助:stackoverflow.com/questions/9571392/…
标签: postgresql timezone timezone-offset