Какое место CURRENT_TIMESTAMP в JPA получить в Java с помощью базы данных postgres? - PullRequest
0 голосов
/ 27 февраля 2019

Я использую jpa и использую точный метод нестандартного запроса jpa.Я использую TypedQuery и Entity управлять Excute, когда я пишу запрос.Мой Jpa оправдание выглядит так:

String query = "select s from Student s where (b.beginDate + b.beginTime) < CURRENT_TIMESTAMP";

Но когда я его извиняю, это неправильно, когда я выбираю.Это отличается до 2 часов, у меня есть 2 вопроса:

  1. Когда я извиняюсь, CURRENT_TIMESTAMP получает время базы данных, сервер, содержащий базу данных, или сервер, на котором работает Java-машина.Потому что у меня 2 сервера.Сервер содержит базу данных с часовым поясом Парижа и сервер с работающей пружиной с JDK, содержащим часовой пояс Японии.
  2. Когда я его создаю, мне нужен формат CURRENT_TIMESTAMP as 'YYYY-MM-DD HH:Mm:SS'

Пожалуйста, помогите.Спасибо

1 Ответ

0 голосов
/ 27 февраля 2019

Ваша проблема не имеет ничего общего с JPA!

В документации Postgresql написано

Функция PostgreSQL CURRENT_TIMESTAMP () возвращает текущую дату и время с часовым поясом, который являетсявремя начала транзакции.

Возвращенная метка времени - это всегда данные и время с зоной времени.

В вашем SELECT сравнение будет работать, если вы ранее сохранили время втот же формат.

Если у вас есть поле BEGIN_DATE_TIME с правильным форматом, проблем нет.

У вас, безусловно, проблема, потому что (b.BEGINDATE + b.BEGINTIME) не будет производить дату и времясо значением часового пояса!

Можете ли вы дать нам больше информации об этих 2 полях?

...