Я использую приложение на основе Java, которое обращается к MySQL через JDBC-коннектор.
Если я запускаю этот параметр, выберите в MySQL Workbench (где тип per_date_from
равен DATE
):
select per_date_from from formulas;
Я получаю одну строку:
1993-05-27
Теперь, если я запускаю этот код Java:
stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("select per_date_from from formulas");
while (rs.next()) {
java.sql.Date d = rs.getDate(1);
System.out.println("d=" + d);
java.sql.Timestamp ts = rs.getTimestamp(1);
System.out.println("ts=" + ts);
}
Я получаю этот результат в консоли:
09:35:51,412 INFO [stdout] (default task-2) d=1993-05-26
09:35:51,412 INFO [stdout] (default task-2) ts=1993-05-26 23:00:00.0
И код Java, и MySQL Workbench имеют следующую опцию подключения:
serverTimezone=America/New_York
Что происходит?Почему столбец типа DATE
имеет время?
ОБНОВЛЕНИЕ
Версия сервера MySQL: 5.7.20
Версия JDBC-соединителя: 8.0.13
Согласно здесь они совместимы