将 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的主要内容,如果未能解决你的问题,请参考以下文章

Postgres中没有时区默认CURRENT_TIMESTAMP的字段TIMESTAMP的JPA模型类?

Rails 和 Postgres:迁移到 change_colomn 时出现错误“无法强制转换为没有时区的时间戳”

Postgres UTC时区vs当地时区

Postgres to_timestamp 将时区设置为 +1

Postgres 通过时区转换防止时间戳

时区感知 postgres 查询为分钟、小时、天创建时间序列