Как работать с полем типа DateTime в MSSQL через JDBC?

332
26 июня 2017, 18:21

Есть таблица в которой содержится поле типа DateTime в котором хронится дата и время некой операции. При запросе через MS SQL Manager я вижу что есть записи даты со временем. При запросе через JDBC, при вызове следующих методов: getDate() и getTimeStamp() мне прилетает только дата с нулевым временем ( я проверял что именно дата без временем, преобразуя дату в секунды). При вызове getTime() мне прилетает дата 1 января 1970 года (что правильно) и 0 часов 0 мину 0 секунд. При работе с Oracle или MySQL таких граблей ней. Метод getDate() возвращает и дату и время..

Answer 1

Возможно, у вас есть приложение Java, которое использует драйвер JDBC Microsoft SQL Server версии 3.0 и Java Runtime Environment версии 1.7 (JRE 1.7) для подключения к базе данных SQL Server. Драйвер некорректно работает с JRE > 1.6.

Если это сценарий, это может быть вызвано драйверами JDBC. Исправление для этого доступно по ссылке ниже:

Исправление

Лучшая практика заключается в том, чтобы взять то, что дает ваш драйвер JDBC, и от этого создавать объекты Java 8, java.time. *. В конце концов, должны выйти новые драйверы JDBC, которые автоматически будут использовать новые классы java.time. *. До тех пор некоторые методы были добавлены к классам java.sql.*, чтобы взаимодействовать с java.time, например, toInstant и toLocalDateTime в Timestamp. java.sql.date содержит только дату без времени.

READ ALSO
Запуск процесса с мониторингом Windows

Запуск процесса с мониторингом Windows

Добрый день! Необходимо запустить процесс из командной строки и отследить файлы, созданные имПробовал Process Monitor - он действительно отображает...

301
Session в Spring MVC

Session в Spring MVC

Для примера возьмем простой примерЮзер логиниться на сайт и хочет поменять себе ник на сайте; он заполняет форму, отправляет запрос на контроллер,...

312