Ответ 1
ResultSet.getDate()
возвращает a java.sql.Date
, а не java.util.Date
. Он определен как вневременная дата.
Если вы хотите создать временную метку, используйте ResultSet.getTimestamp()
!
Я теряю точность в своих вызовах ResultSet.getDate(x). В основном:
rs = ps.executeQuery();
rs.getDate("MODIFIED");
возвращает даты, усеченные до дня, когда MODIFIED является полем Oracle TIMESTAMP точности по умолчанию. Я думаю, что может быть какая-то настройка JDBC, которую я пропускаю; обычно TIMESTAMP совместим с DATE, но я надеюсь, что мне не нужно переопределять всю таблицу.
ResultSet.getDate()
возвращает a java.sql.Date
, а не java.util.Date
. Он определен как вневременная дата.
Если вы хотите создать временную метку, используйте ResultSet.getTimestamp()
!
Вы должны использовать java.sql.Timestamp вместо java.sql.Date. Вы можете использовать его как объект java.util.Date после этого, если необходимо.
rs = ps.executeQuery();
Timestamp timestamp = rs.getTimestamp("MODIFIED");
Надеюсь, что это поможет.
Использование Timestap - правильный путь. Пожалуйста, не делайте этого с помощью Timestamp, вы не сможете установить столбцы в значение NULL, если вы будете использовать Liquibase.
Проблема, с которой я столкнулся.