Ответ 1
java.sql.Date
обозначает дату, а не дату и время. Из документы:
Чтобы соответствовать определению SQL DATE, значения миллисекунды, обернутые экземпляром java.sql.Date, должны быть "нормализованы", установив часы, минуты, секунды и миллисекунды на ноль в конкретном часовом поясе, с которым экземпляр связан.
Если вы хотите сохранить дату и время, вы должны искать другой тип - например, java.sql.Timestamp
. EDIT: Это не означает, что вы используете тип столбца TIMESTAMP - как говорит paulsm4 в комментариях, это другое дело. Однако, насколько я вижу, JDBC поддерживает только:
-
Date
(нет, вам тоже нужно время) -
Time
(нет, вы тоже хотите дату) -
Timestamp
(включает дату и время, но вам не нужна семантика SQL TIMESTAMP)
Я ожидал бы использования типа Java Timestamp
с столбцом DATETIME, хотя бы без уровня точности, который предоставляет Timestamp
.
EDIT: после немного большего количества исследований, похоже, что вы можете использовать тип java.sql.Time
, но со специальными параметрами драйвера - по крайней мере, если вы используете драйвер Microsoft. Для получения дополнительной информации см. Эти документы в настройке JDBC.