Java JDBC :постоянно опережает на два дня

Я использую Java JDBC, чтобы записать дату на SQL Server 2008, а затем прочитать ее обратно.
Дата, которая считывается обратно, постоянно на два дня раньше, чем дата, которая была фактически записана.

Я вставляю строку, содержащую поле «Дата», с подготовленным оператором. Значение даты предоставляется:

java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ;
System.out.println(todaysDate.toString()) // -> 2012-07-02
ps.setDate(8, todaysDate);

После записи даты в БД SQL-сервер показывает мне правильную дату, если я запускаю:

select date from table_name where date!=null // ->2012-07-02

Если я запускаю тот же запрос через JDBC, то получаю значение даты из набора результатов, используя

java.sql.Date sqlDate = rs.getDate("date") ;
sqlDate.toString() // ->2012-06-30

Вставленная строка является единственной строкой в ​​таблице с нулевой датой, отличной от -, так что это не похоже на чтение неправильной записи.

Я думал, что это будет хорошо известная проблема, но единственная ссылка, которую я смог найти в поиске Google по проблеме «два выходных», не дала однозначного ответа.

Любые идеи?

бики (живущий в прошлом)

24
задан StackzOfZtuff 24 May 2019 в 08:32
поделиться