Эквивалент datetime в java.sql? (есть ли java.sql.datetime?)
До сих пор я не нашел ясного ответа на этот вопрос.
Я хотел бы знать, что эквивалент для типа DATETIME типа SQL и типа java, используя PreparedStatement.
Я нашел: http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm
Но он утверждает, что тип SQL DATETIME совпадает с sql.date, но при просмотре документов даты SQL (http://download.oracle.com/javase/7/docs/api/java/sql/Date.html), он говорит, что время усечено (все нули).
Я хочу, чтобы я мог указать preparedStatement.setDateTime()
или какой-то вид.
Единственный другой способ, который я вижу, - использовать временную метку, но это потребует от меня изменить тип столбца, в то время как я не могу себе представить, что кто-то еще никогда не сталкивался с этой проблемой раньше?
Любые подсказки?
Изменить: я использую MYSQL.
Ответы
Ответ 1
Пакет java.sql имеет три типа даты/времени:
Вы хотите последний: java.sql.Timestamp
.
Если вы используете эти типы, вам не нужно вызывать определенный сеттер; просто используйте:
java.util.Date date = new Date();
Object param = new java.sql.Timestamp(date.getTime());
// The JDBC driver knows what to do with a java.sql type:
preparedStatement.setObject(param);
Ответ 2
Эквивалент типа данных MS SQL Server или MySQL DATETIME или типа данных Oracle DATE - java.sql.Timestamp.
Ответ 3
У меня была аналогичная проблема с моей Mysql с датой SQL и локально в моем приложении, у меня была дата
Я решил так:
java.sql.Date dataStartSql = new java.sql.Date(start.getTime());
После этого обычно используется setDate, и я использовал getTimestamp для извлечения первого значения.
где start - объект Date.
Ответ 4
В Java у нас есть java.util.Date для обработки значений даты и времени.
В SQL у вас обычно есть Даты (только даты), Время (только время) и DateTime/Timestamp (дата и время).
В вашей программе Java обычно у вас всегда будет java.util.Date, поэтому каждый раз, когда вы устанавливаете Dates/Times/DateTimes в PreparedStatements, всегда выбирайте именно тот, который вам нужен, в соответствии с базой данных.