oracle db current_date возвращает java.sql.Timestamp, а не java.sql.Date - PullRequest
0 голосов
/ 14 мая 2018

oracle db JDBC:

select current_date from dual

Возвращает java.sql.Timestamp, а не экземпляр java.sql.Date.

select current_timestamp from dule

Возвращает oracle.sql.TIMESTAMPTZ, а не экземпляр java.sql.Timestamp.

Как заставить их возвращать значения JDBC java.sql. * Стандартных типов?

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

В Oracle тип данных DATE имеет год, месяц, день, час, минуты и секунды.

В Java:

  • класс java.sql.Date имееткомпоненты год, месяц и день.
  • класс java.sql.Timestamp содержит компоненты года, месяца, дня, часа, минуты и секунды.

Правильный тип данных Java для Oracle DATE - это java.sql.Timestamp, а не java.sql.Date (вы можете использовать java.sql.Date в качестве возвращаемого значения из хранимых процедур и т. Д., Но оно будет урезать временные компоненты).


В Oracle CURRENT_TIMESTAMP имеет тип данных TIMESTAMP WITH TIME ZONE.В Java это эквивалент oracle.sql.TIMESTAMPTZ класса.

0 голосов
/ 14 мая 2018

Oracle SQL возвращает типы данных Oracle. Вы можете использовать trunc (current_date), чтобы избавиться от части времени (хотя это не повлияет на тип возвращаемого значения!). Однако, чтобы получить правильный тип данных с помощью JDBC, просто используйте правильный метод get в https://docs.oracle.com/javase/8/docs/api/java/sql/ResultSet.html.. Метод getDate возвращает java.sql.Date, метод getTimestamp возвращает java.sql.Timestamp.

.
...