У меня есть запись книги в моей базе данных postgres, с displayTimestamp (типа TIMESTAMPTZ ), установленным в 2020-04-01T15: 19: 35.511599Z . Часовой пояс базы данных устанавливается в UT C.
Когда я выполняю запрос с помощью jooq ( TIMESTAMPTZ , преобразованный в java .time.Instant ), например:
jooq.select(Books.BOOKS.DISPLAY_TIMESTAMP)
.from(Books.BOOKS)
.fetchOne()
Я получаю правильное значение, 2020-04-01T15: 19: 35.511599Z .
Однако, когда я выполняю запрос с использованием транка jooq c метод:
jooq.select(trunc(Books.BOOKS.DISPLAY_TIMESTAMP))
.from(Books.BOOKS)
.fetchOne()
Я получаю результат 2020-03-31T22: 00: 00Z . Похоже, что отметка времени составляет -2 часа от ожидаемого значения. Я замечаю, что когда я устанавливаю часовой пояс JVM явно через -Duser.timezone = UT C, проблема исправлена.
Это показывает, что JOOQ корректирует временную метку на основе часового пояса JVM, но странно только при использовании метода trun c.
Кто-нибудь может предложить какой-либо вклад в исправление этого? В идеале я бы хотел, чтобы JOOQ ( 3.13.0 ) не производил никаких настроек на основе часового пояса JVM.