Удалить часть метки времени в метке времени с полем часового пояса - PullRequest
0 голосов
/ 24 января 2019

Мне нужно обновить поле Java LocalDateTime до таблицы Postgres, в которой поле представляет собой временную метку с часовым поясом, но суть в том, что я должен установить поле времени на 00: 00: 00 + 00 и сохранить поле даты как есть.

Я изменил поле в Java, как это

dateToBeSet.withNano(00).withSecond(00).withMinute(00).withHour(00)

но когда данные вставляются в базу данных, в журнале я вижу, что данные вставляются как 2019-01-23 00:00:00+05:30. Как я могу избавиться от этого +5:30 и просто вставить данные, когда они предоставляются со стороны Java?

Ожидаемое значение в БД: 2019-01-23 00:00:00+00

1 Ответ

0 голосов
/ 24 января 2019

Вы не можете избавиться от часового пояса в базе данных, потому что он там не хранится.

Внутренне то, что хранится, является меткой времени UTC, а когда она преобразуется в строку, она преобразуетсяв часовой пояс, указанный параметром timezone.

Таким образом, если вы хотите, чтобы временная метка была одинаковой, независимо от текущей настройки timezone, вам необходимо использовать тип данных timestamp without time zone.

В качестве альтернативы, извлеките значение, используя конструкцию

ts_field AT TIME ZONE 'IST'

, используя имя часового пояса, в котором вы хотите отобразить метку времени.

...