Эквивалент даты и времени в java.sql?(есть ли java.sql.datetime?) - PullRequest
58 голосов
/ 21 июля 2011

Пока я не нашел четкого ответа на это.

Я хотел бы знать, что эквивалентно для типа SQL DATETIME и типа 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.

Ответы [ 4 ]

98 голосов
/ 21 июля 2011

Пакет 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); 
4 голосов
/ 21 июля 2011

Эквивалентом типа данных MS SQL Server или MySQL DATETIME или типа данных Oracle DATE является java.sql.Timestamp.

1 голос
/ 21 июля 2011

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

В SQL обычно используются даты (только даты), время (только время) и дата / время / метка времени (дата иtime).

В вашей Java-программе обычно всегда будет java.util.Date, поэтому каждый раз, когда вы устанавливаете Dates / Times / DateTimes в PreparedStatements, всегда выбирайте именно то, что вам нужно, в зависимости отв базу данных.

1 голос
/ 21 июля 2011

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

Я решил вот так

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

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

где start - объект Date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...