首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用Java在MySQL中插入日期

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

Stack Overflow用户
提问于 2012-11-22 12:24:16
回答 3查看 7.1K关注 0票数 2

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

代码语言:javascript
运行
复制
Date expDate=null, startDate=null;

然后,我调用了这些函数:

代码语言:javascript
运行
复制
expDate=c.getNotAfter();
startDate= c.getNotBefore();

然后,使用以下命令插入到数据库中:

代码语言:javascript
运行
复制
prepStmt.setDate(1,(java.sql.Date) startDate);
prepStmt.setDate(2, (java.sql.Date) expDate);

在运行程序之后,我得到了这个错误:

代码语言:javascript
运行
复制
java.util.Date cannot be cast to java.sql.Date

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-22 12:29:37

如下所示:

代码语言:javascript
运行
复制
  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类getTime()返回以毫秒为单位的时间。您可以使用它来创建java.sql.Date类的新对象。

如果你想要时间和日期,那么使用时间戳:

代码语言:javascript
运行
复制
prepStmt.setTimestamp(1,new java.sql.Timestamp(startDate.getTime()));
票数 3
EN

Stack Overflow用户

发布于 2012-11-22 12:26:02

像这样使用它:

代码语言:javascript
运行
复制
prepStmt.setDate(1,new java.sql.Date(startDate.getTime())); 

这是因为PreparedStatementsetDate()方法需要一个java.sql.Date类型的对象作为第二个参数,而不是java.util.Date

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

票数 3
EN

Stack Overflow用户

发布于 2013-03-16 20:48:59

代码语言:javascript
运行
复制
prepStmt.setDate(1, (java.sql.Date) startDate);   
prepStmt.setDate(2, (java.sql.Date) expDate);  
prepStmt.setDate(1, new java.sql.Date(startDate.getTime()));
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13505867

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档