【发布时间】:2018-11-21 20:42:34
【问题描述】:
我有一个类型为 TIMESTAMP WITHOUT TIME ZONE 的列 starts_at,因为它代表约会时间,不应在 DST 轮班期间更改。
但是,我们处理定期约会的图书馆这次需要采用 UTC。我正在尝试将 starts_at 转换为 UTC,但我看到我得到的时间代表 MDT(夏令时)而不是 MST(标准时间)。
例如,采取以下方式:
SELECT starts_at, timezone('America/Denver', starts_at) AS new_starts_at
我希望得到以下结果:
--------------------------------------------------
| starts_at | new_starts_at
--------------------------------------------------
| 2018-09-04 13:05:00 | 2018-09-04 20:05:00+00
相反,我得到以下信息:
--------------------------------------------------
| starts_at | new_starts_at
--------------------------------------------------
| 2018-09-04 13:05:00 | 2018-09-04 19:05:00+00
new_starts_at 应该返回MST,即2018-09-04 20:05:00+00。我的印象是,使用奥尔森时区 (America/Denver) 会通知 Postgres 是否有 DST 转换。如果我将America/Denver 替换为MST,我会看到正确的结果。
我确信这只是我对 Postgres 时区类型的误解。也就是说,提前感谢您的教育!
【问题讨论】:
标签: postgresql timestamp-with-timezone