JDBC日期处理

来源:互联网 发布:tensorflow安装教程 编辑:程序博客网 时间:2024/06/07 13:31

       在学习日期处理的时候,必须明白Date类有两个。一个在sql包下,一个在util包下。他们的关系是:java.util.Date是java.sql.Date的父类。同时还要知道sql包下的Date只是面向数据库,而util包下的Date则是面向业务逻辑的。

     

         1.向数据库插入信息。

  

 ps.setDate(3,new java.sql.Date(newDate().getTime()));   

   ps.setDate这个设置的Date是sql包下的Date。

           因此在这个setDate的方法中第二个参数不能是util包下的Date。(可以这么解释。Util包下的Data是父类,而sql包下的Date是子类。子类不能接受父类的参数。)那么我们只能在第二个参数里面放一个sql的Date。在这里我们可以看一下sql包的Date的构造方法。

      

         我们需要传一个long类型的毫秒数(这个参数表示我们要插入数据库的日期值)进去。怎么传呢?new Date().getTime()     这里的Dateutil的,因为我们要获取时间,没办法只能用util的(utilDate是面向逻辑业务的)。那getTime()方法呢?是这样的,如果你单纯建立一个测试类写入

 

System.out.println(new Date().getTime());   

      其输出结果为:1356413797263

      话说回来,那么为什么传一个1356413797263的参数会在数据库里写一个2012-12-25这个样的值呢?他会更具这个时间间隔的毫秒数自动转换(因为起始时间是一定的)。

      

      总结一下:

     


         2.从数据库里读取数据

        

     

      System.out.println(name+"的创建日期是"+rs.getDate("date"));

         这里getDate()方法返回的是一个sql包下的Date。同时我们也可以将这个返回值转换为util包下的Date。这里不需要强制转换。因为子类可以赋给父类。