将 Postgres 中没有时区的 DateTime 字段从中欧时间转换为 UTC

Posted

技术标签:

【中文标题】将 Postgres 中没有时区的 DateTime 字段从中欧时间转换为 UTC【英文标题】:Converting DateTime field without timezone in Postgres from Middle European TIme to UTC 【发布时间】:2020-03-27 06:28:51 【问题描述】:

我想将没有时区的 DateTime 字段从中欧时间转换为 UTC(在 Postgres 中使用 SQL 更新)。 这里有一个问题,DateTime 可能是夏令时或冬令时,因此 DateTime 是 UTC+1 或 UTC+2。症结在于用bord手段找到Postgres的DST边界。

我尝试编写一个可以找到上述 DST 边界的存储过程,但除了这个之外,我没有找到任何简单合适的解决方案: https://www.keithf4.com/postgresql_dst/

是否有更简单的解决方案?

【问题讨论】:

【参考方案1】:

这很简单。将其转换为绝对时间戳并返回。如果您正确指定时区,将自动考虑夏令时。

对于奥地利,它看起来像这样:

SELECT TIMESTAMP '...' AT TIME ZONE 'Vienna/Europe' AT TIME ZONE 'UTC';

【讨论】:

以上是关于将 Postgres 中没有时区的 DateTime 字段从中欧时间转换为 UTC的主要内容,如果未能解决你的问题,请参考以下文章