Лучше ли использовать ResultSet.getString () или ResultSet.getTimestamp () для получения метки времени?
Ни того, ни другого.
Лучше получить дату-time объект, а не строка, так как это лучше представляет, что это значит и означает, и должно лучше подходить для дальнейших операций в программе на Java.
В то же время гораздо лучше использовать современную дату-времяклассы из java.time, чем старомодный Timestamp
класс.Последний имеет значительные проблемы с дизайном и долгое время считался устаревшим.
Драйверы JDBC немного отличаются, но посмотрите, можете ли вы получить правильное время в виде Instant
, OffsetDateTime
или если все остальноене получается, тогда LocalDateTime
из вашего набора результатов.Во всех случаях используйте метод с двумя аргументами getObject
.Например:
Instant instant = resultSet.getObject("startDate", Instant.class);
JDBC 4.2 указывает, что классы java.time должны поддерживаться таким образом.Я полагаю, что все современные движки баз данных SQL имеют драйверы, совместимые с JDBC 4.2.
Только если вы не можете использовать Java 8 или новее, получите Timestamp
, как в вашем коде.Затем используйте версии классов java.time из ThreeTen-Backport и используйте класс DateTimeUtils
из ThreeTen-Backport для преобразования вашего Timestamp
, лучше всего в en Instant
, но если это произойдет, чтобы дать вам неправильный момент из-за проблемы с часовым поясом, тогда LocalDateTime
Пример:
Instant instant =
DateTimeUtils.toInstant(
resultSet.getTimestamp("startDate")
)
;