Jooq корректирует timestamptz для мгновенного преобразования, используя часовой пояс JVM - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть запись книги в моей базе данных 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.

...