JDBC и MySQL, как сохранить java.util.Date в столбце DATETIME? - PullRequest
4 голосов
/ 01 октября 2011

Я изо всех сил пытаюсь понять, как заставить это работать. У меня есть подготовленный отчет, и я хочу сохранить дату java.util.date. Не работает Я попытался привести его к java.sql.Date, и он все еще не работает. в чем проблема с фреймворком Java, это действительно не так просто.

Ответы [ 3 ]

11 голосов
/ 01 октября 2011

Вы должны использовать java.sql.Timestamp для хранения java.util.Date в поле DATETIME. Если вы проверите javadocs обоих классов (нажмите на вышеуказанные ссылки!), Вы увидите, что Timestamp имеет конструктор , который принимает время в миллисах, а Date имеет геттер возвращает время в миллис.

Посчитайте:

preparedStatement.setTimestamp(index, new Timestamp(date.getTime()));
// ...

Вы должны не использовать java.sql.Date, поскольку оно представляет только часть даты, а не часть времени. При этом вы получите 00:00:00 как время в поле DATETIME.

Только для вашей информации, поскольку Timestamp является подклассом java.util.Date, вы можете просто выгружать его всякий раз, когда получаете его от ResultSet.

Date date = resultSet.getTimestamp("columnname");
// ...
2 голосов
/ 01 октября 2011

Может быть, вы можете попробовать это:

java.util.Date now = new java.util.Date();
java.sql.Date date = new java.sql.Date(now.getTime());
pstmt.setDate(columnIndex,date);
2 голосов
/ 01 октября 2011

Это будет сделано:

int dateColumnId = 0; // or whatever the value needs to be.
java.util.Date incomingValue = new java.util.Date(System.currentTimeMillis());
java.sql.Date databaseValue = new java.sql.Date(incomingValue.getTime());   
ps.setDate(dateColumnId, databaseValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...