UPD: решено. Я изменил поля DATE на тип DATETIME в каждой таблице. Я до сих пор не имею представления о «природе» проблемы и почему она была настолько случайной, но теперь проблема исправлена. Спасибо всем!
Я использую MS SQL Express 2014 для хранения некоторых данных.
У меня есть 3 разных таблицы, каждая из которых содержит поле типа DATE.
Когда я делаю оператор выбора для каждой таблицы через JDBC, ResultSet в некоторых случаях возвращает даты с потерей 2-4 дней.
Код выглядит так:
ResultSet rs = preparedStatement.executeQuery();
while(rs.next()){
java.sql.Date date = rs.getDate("DATE");
}
Даты в БД выглядят так: «1942-06-10», «1938-03-15» и т. Д. Потеря происходит только иногда, независимо от того, как выглядит дата. На стороне Java они становятся "1942-06-08" или "1938-03-11".
Я не могу понять причину проблемы, потому что
в некоторых случаях «дата» содержит точные данные в виде поля в БД,
а в других случаях «дата» теряет от 2 до 4 дней по сравнению с полем БД.
Спасибо!