【发布时间】:2021-08-25 16:57:50
【问题描述】:
我正在从 Postgres 查询到 Java。
我已将 Postgres 和 Java 都设置为使用 'UTC'。
但是,当我出于某种原因进行查询时,日期会受到夏令时跳跃的影响。
我将休眠设置为 UTC。 (pom.xml)。
<properties>
<spring-boot.run.jvmArguments>-Duser.timezone=UTC</spring-boot.run.jvmArguments>
<property name="hibernate.jdbc.time_zone" value="UTC"/>
</properties>
我的 postgres 时区设置为 UTC。 时区 = 'UTC'(重新启动的服务) 当我查询 postgres 时,我没有得到问题。 此外,当我在 java 中手动设置日期然后递增时,我没有得到问题。
似乎只有当我出于某种原因查询和使用休眠时,它才会在一段时间内“忽略”UTC并跳过一小时。
我也许能够做一些激烈的事情,比如在数据库中使用 char 与时间戳,所以休眠不会混淆,但这似乎很激烈,我一定错过了一些简单的事情?
更新:因此,将所有逻辑移至存储过程并在那里执行解决了问题。我什至会说这可能是休眠的一个错误。我已将它设置为休眠以使用应该排除时区的 UTC?
【问题讨论】:
-
不幸的是,一些工具和中间件喜欢对从数据库中检索到的值应用时区。 Postgres 仅在 UTC 中存储
TIMESTAMP WITH TIME ZONE,始终为 UTC。
标签: java postgresql time timezone dst