如何通过jpa实体管理器为psql“设置时区”?

时间:2018-10-11 12:39:58

标签: hibernate jpa timezone psql

我应该如何在UTC中操纵时间戳以添加偏移量?

我从这里了解基本知识: http://blog.untrod.com/2016/08/actually-understanding-timezones-in-postgresql.html

但尚未找到解决该问题的合适方法:

Psql数据库位于UTC中,对于存储在db中的日期,我想通过时区并返回正确的时区结果: 说通过欧洲/柏林应该导致:2018-02-03 02:00:00 + 00-> 2018-02-03 04:00:00 + 02:00

当我使用select my_date with time zone 'Europe/Berlin'时,将正确增加小时数,但不幸的是将截断该偏移量。 我发现的一种解决方案是在查询前设置“ set timezone = Europe / Berlin”,当我使用该方法时,它就像一个超级按钮 它来自纯sql。但是,当我尝试将其作为nativequery调用时,会导致错误,可能是因为它不是DML查询。

我尝试通过Java代码为会话设置会话的时区:

session = HibernateUtil.getSessionFactory().withOptions()
.jdbcTimeZone(TimeZone.getTimeZone("Europe/Berlin"))
.openSession();

但是在同一会话(SELECT current_setting('TIMEZONE');)中的查询说它仍然是UTC。

我可以通过代码克服这个问题(根据区域将Java代码转换为结果),但是我想从 sql查询。

有可能吗?

0 个答案:

没有答案