Как установить часовой пояс для PSQL из jpa entitymanager? - PullRequest
0 голосов
/ 11 октября 2018

Как мне манипулировать отметкой времени в 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', будет увеличивать час правильно, но, к сожалению, срезать смещение.Одно решение, которое я нашел, это «установить часовой пояс = Европа / Берлин» перед запросом, который работает, как талисман, когда я использую его из чистого SQL.Однако, когда я пытаюсь вызвать его как nativequery, это приводит к ошибке, возможно, потому что это не DML-запрос.

Я попытался установить часовой пояс сеанса из кода Java для сеанса:

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

Но запрос в том же сеансе (SELECT current_setting('TIMEZONE');) говорит, что это все еще UTC.

Я могу преодолеть эту проблему с помощью кода (преобразование результата из кода Java в соответствии с зоной), однако я хочу сделатьэто из sql запроса.

Возможно ли это как-то?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...