我应该如何在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查询。
有可能吗?