Да, есть несколько подобных вопросов о переполнении стека, но все они относятся к предыдущим версиям различных компонентов (насколько я могу найти).
Проблема MS SQL Драйверы по-прежнему при возврате дат две даты в прошлом, кажется, сохраняются при получении их из набора результатов.
Пример: если вы вставляете дату в таблицу в БД MS SQL, скажем, с типом столбца Date, Временная метка или Datetime или Datetime2, а затем попробуйте getDate, getString, getTimestamp
или (LocalDate)getObject
против последующего SELECT с подготовленным заявлением и набором результатов, даты составляют -2 дня.
На JRE 1.8.0-66 , На данный момент затронуты драйверы ms- sql jdb c: 8.2.1.jre8, 8.2.0.jre8, 7.4.1.jre8, 7.4.0.jre8, 7.2.0.jre8, 7.0.0.jre8 , 6.4.0.jre8, 6.2.2.jre8, 6.2.0.jre8.
Я методично попробовал все вышеперечисленные драйверы с моим приложением.
Интересно, что я запускаю SQuirreL, используя один из тех же драйверов, 7.0.0.jre8, и использую SQL консоль, чтобы выбрать те же данные, я вижу правильную дату отображается.
Так что, возможно, проблема уже не в драйвере, как это было в прошлом, а, возможно, в самом исполнении Java ResultSet
или PreparedStatement
?
Edit: Насколько я могу судить, просматривая github-репозиторий для драйвера MS SQL JDB C, он полностью полагается на собственные типы данных java. sql для приведения значений столбцов к соответствующим типам. , Чего я еще не знаю, так это того, предоставлены ли эти нативные типы в качестве переопределений в классе драйверов или нет. Все еще ищите root проблемы и удалите тег sql -server.