JDBC ResultSet getDate теряет точность - PullRequest
27 голосов
/ 16 июля 2010

Я теряю точность в моих вызовах ResultSet.getDate (x).В основном:

rs = ps.executeQuery();
rs.getDate("MODIFIED");

возвращает даты, усеченные до дня, когда MODIFIED является полем Oracle TIMESTAMP с точностью по умолчанию.Я думаю, что может быть некоторая настройка JDBC, которую я пропускаю;обычно TIMESTAMP совместим с DATE, но я надеюсь, что мне не нужно переопределять всю таблицу.

Ответы [ 3 ]

63 голосов
/ 16 июля 2010

ResultSet.getDate() возвращает <a href="http://docs.oracle.com/javase/6/docs/api/java/sql/Date.html" rel="noreferrer">java.<strong>sql</strong>.Date</a>, а не <a href="http://docs.oracle.com/javase/6/docs/api/java/util/Date.html" rel="noreferrer">java.<strong>util</strong>.Date</a>.Это определено как вечная дата.Если вам нужна временная метка, используйте ResultSet.getTimestamp()!

4 голосов
/ 16 июля 2010

Вы должны использовать java.sql.Timestamp вместо java.sql.Date. Вы можете использовать его в качестве объекта java.util.Date впоследствии при необходимости.

rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");

Надеюсь, это поможет.

0 голосов
/ 10 августа 2012

Использование Timestap - правильный путь.Пожалуйста, не думайте, что с Timestamp вы не сможете установить для столбцов значение NULL, если будете использовать Liquibase.

...