首页 > 技术文章 > 如何将util.Date转化为sql.Date

sunshine6 2016-10-10 19:41 原文

通过查看API可以很容易知道,util.Date类时sql.Date的父类,所以根据向上转型的原理可以很简单的知道时可行的,不用做转换都可以。

但是如果想要将util.Date转化为sql.Date,是不存在向下直接转型的!

 1 String str="2010-10-10";
 2         Date date1=null;
 3         try {
 4             date1 = new SimpleDateFormat("yyyy-MM-dd").parse(str);
 5         } catch (ParseException e) {
 6             e.printStackTrace();
 7         }
 8 
 9 //这是我定义的一个在dbutil对象里的update方法用于向数据库中插入数据
10 dbutil.update("张三",date1);

以上代码提示以下错误:

The method update(java.lang.String, java.sql.Date) in the type DBUtil is not applicable for the arguments (java.lang.String, java.util.Date)

我们认真看API文档会发现:

sql.Date里面有个构造方法:

Date(long date)      使用给定毫秒时间值构造一个 Date 对象。

恰巧的是强大的JAVA,在util.Date里面有一个为过期的方法:

long getTime()
          返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

 就提供给这构造函数使用的。

所以可以将上面的代码改正为:

1         String str="2010-10-10";
2         Date date1=null;
3         try {
4             date1 = new SimpleDateFormat("yyyy-MM-dd").parse(str);
5         } catch (ParseException e) {
6             e.printStackTrace();
7         }
8         java.sql.Date hiredate=new java.sql.Date(date1.getTime());
9         dbutil.update("张三",hiredate);    

这样就可以正确的转化。

除此之外,还可以:

1         java.sql.Time date1=new java.sql.Time(new java.util.Date().getTime());//时   分    秒
2         java.sql.Timestamp date2=new java.sql.Timestamp(new java.util.Date().getTime());//年  月 日  时  分   秒 毫秒

以上在学习的时候的小总结,若有错误或不足,请大家多多指正。

推荐阅读