我很难理解如何让它发挥作用。我有一个准备好的语句,我想坚持java.util.date。它不起作用。 我试图把它强制转换为java.sql.Date,它仍然无法正常工作。 java日期框架的问题是什么,它真的不是直截了当的。
答案 0 :(得分:11)
您应该使用java.sql.Timestamp
在DATETIME
字段中存储java.util.Date
。如果你检查两个类的javadocs(点击上面的链接!),你会看到Timestamp
有一个constructor花费时间毫秒,Date
有一个{{ 3}}以毫秒为单位返回时间。
算一算:
preparedStatement.setTimestamp(index, new Timestamp(date.getTime()));
// ...
您应该不使用getter,因为它仅代表日期部分,而不是时间部分。有了这个,您最终会在00:00:00
字段中以DATETIME
为结尾。
仅供参考,因为Timestamp
是java.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);