Как сохранить тип даты Java для типа даты MySQL?

Как сохранить тип даты Java для типа даты MySQL?

3 ответа

Смотри, что твой Date это java.sql.Timestamp (особенно если вы хотите, чтобы часы, минуты, секунды... сохранялись)
Вы могли бы преобразовать java.util.Date к Timestamp вот так: new Timestamp(date.getTime())

Используйте некоторый экземпляр класса Calendar, чтобы преобразовать дату в строку и использовать строку в своем запросе SQL.

Использовать PreparedStatement выполнить инструкцию SQL, например так:

Date date = ...;

PreparedStatement ps = connection.prepareStatement("INSERT INTO mytable (this, that, datecol) values (?, ?, ?)");

ps.setString(1, "hello");
ps.setString(2, "world");
ps.setTimestamp(3, new java.sql.Timestamp(date.getTime()));

ps.executeUpdate();

Когда вы делаете это таким образом, вы позволяете драйверу JDBC преобразовывать его в формат, который ожидает база данных, чтобы ваша программа могла оставаться независимой от базы данных (вам не нужно иметь дело с форматированием так, как MySQL ожидает это самостоятельно),

При запросе базы данных, также используйте PreparedStatement и использовать getTimestamp() метод на ResultSet чтобы получить дату как java.sql.Timestamp объект.

java.time

Современный подход использует классы java.time.

В DATE Тип в MySQL представляет собой только дату, без времени суток и без одной зоны.

Так что используйте LocalDate с драйвером, совместимым с JDBC 4.2.

ZoneId z = ZoneId.of( "Africa/Tunis" ) ;
LocalDate today = LocalDate.now( z ) ;

myPreparedStatement.setObject( … , today ) ;

Извлечение.

LocalDate ld = myResultSet.getObject( … , LocalDate.class ) ;
Другие вопросы по тегам