java.util.Date和java.sql.Date的区别及使用

java.sql.Date是java.util.Date的子类,其中,java.util.Date还有两个常用的子类:java.sql.Time和java.sql.Timestamp。


java.sql.Date就是与数据库Date相对应的一个类型(数据库操作),而java.util.Date是纯java的Date。

从类 java.util.Date 继承的方法  
after, before, clone, compareTo, equals, getDate, getDay, getMonth, getTime, getTimezoneOffset, getYear, hashCode, parse, setDate, setMonth, setYear, toGMTString, toLocaleString, UTC 


把一个日期值写入数据库中,发现由java.util.Date转存为java.sql.Date后,只有年月日,没有了时分秒: 

  1. java.util.Date ud = new java.util.Date();   
  2. java.sql.Date sd = new java.sql.Date(ud.getTime()); 

  这个可是不行的,用户至少要精确到分。由于java.sql.Date为了能够遵守sql日期标准,把所有时分秒都归了零。只有用Timestamp来进行保存,由于Timestamp是子类,因此写好的bean里面不需要修改数据类型。 

  1. pstmt.setTimestamp(15, new java.sql.Timestamp(Calendar.getInstance().getTime().getTime()));  //当前时间  
  2. pstmt.setTimestamp(16, new java.sql.Timestamp(userFile.getCreateTime().getTime()));  //指定时间  

java.util.Date可以通过和Calendar类结合使用,操作日期和时间(时分秒)。
java.sql.Date可以通过和Calendar类结合使用,操作日期,但不能操作时间(时分秒),因为里面的方法很多都废弃了。
java.sql.Time可以通过和Calendar类结合使用,操作时间(时分秒),但不能操作日期,因为里面的方法很多都废弃了。
java.sql.Timestamp最好用,既可以操作时间,也可以操作日期


在使用SimpleDateFormat时格式化时间的 yyyy.MM.dd 为年月日而如果希望格式化时间为12小时制的,则使用hh:mm:ss 如果希望格式化时间为24小时制的,则使用HH:mm:ss

你可能感兴趣的:(java.util.Date和java.sql.Date的区别及使用)