如何使用Java在MySQL中插入日期

时间:2012-11-22 04:24:16

标签: java

我有一个Date类型的变量。我通过使用返回类型Date的函数来获取此日期。所以,我将两个变量定义为:

Date expDate=null, startDate=null;

然后,我调用了函数:

expDate=c.getNotAfter();
startDate= c.getNotBefore();

然后,使用:

插入数据库
prepStmt.setDate(1,(java.sql.Date) startDate);
prepStmt.setDate(2, (java.sql.Date) expDate);

运行程序后,我收到此错误:

java.util.Date cannot be cast to java.sql.Date

数据库中的列定义为DATETIME类型。我该如何解决这个问题?

3 个答案:

答案 0 :(得分:3)

像这样使用:

prepStmt.setDate(1,new java.sql.Date(startDate.getTime())); 

这是因为setDate()的{​​{1}}方法需要PreparedStatement类型的对象作为第二个参数而不是java.sql.Date

首先从java.util.Date对象获取时间(以毫秒为单位),然后在java.util.Date的构造函数中使用它。

答案 1 :(得分:3)

这样做:

  prepStmt.setDate(1,new java.sql.Date(startDate.getTime()));

java.sql.Date是一个围绕毫秒值的瘦包装器,允许JDBC将其标识为SQL DATE值。毫秒值表示自January 1, 1970 00:00:00.000 GMT以来经过的毫秒数。

java.util.Date classes getTime()以毫秒为单位返回时间。您可以使用它来创建java.sql.Date类的新对象。

如果您想要时间和日期,请使用时间戳:

prepStmt.setTimestamp(1,new java.sql.Timestamp(startDate.getTime()));

答案 2 :(得分:1)

prepStmt.setDate(1, (java.sql.Date) startDate);   
prepStmt.setDate(2, (java.sql.Date) expDate);  
prepStmt.setDate(1, new java.sql.Date(startDate.getTime()));