Эквивалент datetime в java.в SQL? (есть ли java.язык SQL.значение datetime)


до сих пор я не нашел четкого ответа.

Я хотел бы знать, что эквивалентно для типа SQL DATETIME и типа java, используя PreparedStatement.

Я нашел: http://www.java2s.com/Code/Java/Database-SQL-JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm

но в нем говорится, что тип SQL "DATETIME" совпадает с sql.дата, но при просмотре документов SQL date (http://download.oracle.com/javase/7/docs/api/java/sql/Date.html), он говорит, что время усечено (все нули).

то, что я хочу, чтобы иметь возможность указать preparedStatement.setDateTime() или что-то вроде.

единственный другой способ, который я вижу, - это использовать метку времени, но это потребует от меня изменить тип столбца, в то время как я не могу представить, что у кого-то еще никогда не было этой проблемы раньше?

какие-то намеки?

Edit: я использую MYSQL.

4   51   2011-07-21 18:35:30

4 ответа:

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); 

эквивалентом типа данных MS SQL Server или MySQL DATETIME или типа данных Oracle DATE является java.язык SQL.Отметка времени.

У меня была аналогичная проблема с моим Mysql, имеющим дату SQL, и локально в моем приложении у меня была только дата

Я решил так

java.sql.Date dataStartSql = new java.sql.Date(start.getTime());  

после этого обычно используется setDate, и я использовал getTimestamp для повторного получения первого значения.

где start-это объект даты.

в Java у нас есть java.утиль.Дата для обработки значений даты и времени.

в SQL у вас обычно есть даты (только даты), время (только время) и DateTime/Timestamp (дата и время).

в вашей программе Java, как правило, вы всегда будете иметь java.утиль.Дата, поэтому каждый раз, когда вы устанавливаете даты/времена/даты в PreparedStatements, всегда выбирайте именно тот, который вам нужен, в соответствии с базой данных.