【发布时间】:2013-04-27 14:09:47
【问题描述】:
我在欧洲/柏林时区 (+02),Postgresql 在 UTC (+00) 运行。 我需要获取最新本地午夜日期的时区时间戳(我的时区当天的开始日期)。
所以如果我们有 2013-03-03 14:00:00+02,我的最终结果将是这样的
2013-03-03 22:00:00+00
2013-03-04 00:00:00+02 // the same
我试图得到这个日期
SELECT TIMESTAMP 'today' AT TIME ZONE 'Europe/Berlin'
不幸的是,这会在 00:00 和 02:00 期间产生错误的日期(前一天午夜),因为 UTC 时间仍然是前一天,而今天似乎使用 utc 来计算其余时间。
如果我们有 2013-03-03 00:05 at Europe/Berlin 这将返回
2013-05-01 22:00:00+00
如果我想要正确的日期,我需要使用
SELECT date_trunc('day', now() AT TIME ZONE 'Europe/Berlin') AT TIME ZONE 'Europe/Berlin';
2013-05-02 22:00:00+00
这是正确的,但很丑。
这个命令有更简洁的变体吗?
【问题讨论】:
标签: postgresql timezone