JDBC和MySQL,如何将java.util.Date持久化到DATETIME列?

时间:2011-10-01 17:12:54

标签: java mysql jdbc

我很难理解如何让它发挥作用。我有一个准备好的语句,我想坚持java.util.date。它不起作用。 我试图把它强制转换为java.sql.Date,它仍然无法正常工作。 java日期框架的问题是什么,它真的不是直截了当的。

3 个答案:

答案 0 :(得分:11)

您应该使用java.sql.TimestampDATETIME字段中存储java.util.Date。如果你检查两个类的javadocs(点击上面的链接!),你会看到Timestamp有一个constructor花费时间毫秒,Date有一个{{ 3}}以毫秒为单位返回时间。

算一算:

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

您应该使用getter,因为它仅代表日期部分,而不是时间部分。有了这个,您最终会在00:00:00字段中以DATETIME为结尾。

仅供参考,因为Timestampjava.util.Date的子类,只要您从ResultSet获取它,就可以将其翻译。

Date date = resultSet.getTimestamp("columnname");
// ...

答案 1 :(得分:2)

这样做:

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

答案 2 :(得分:2)

也许你可以试试这个:

java.util.Date now = new java.util.Date();
java.sql.Date date = new java.sql.Date(now.getTime());
pstmt.setDate(columnIndex,date);