将 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 时出现错误“无法强制转换为没有时区的时间戳”