java.util.date是java.sql.date和java.sql.Timestamp的父类.
java.util.date是用于一般环境对于时间的读和写。
java.sql.date和java.sql.Timestamp是用在对数据库时间格式的存储和读取时用到的。
java.util.date的用法:
java.util.Date date = new java.util.Date();
可以用java.text.SimpleDateFormat 进行格式化显示:
SimpleDateFormat dateFormat=new SimpleDateFormat ("yyyy-MM-dd HH:mm:ss"); String Fromatdate=dateFormat.format(date);
当需要对数据库时间操作时,需要转换,反过来一样:
java.sql.Date date=new java.sql.Date();java.util.Date d=new java.util.Date(date.getTime());
因为用java.sql.date在数据库时间操作上存在数据丢失的问题,所以在数据库时间建模和操纵时习惯用java.sql.Timestamp,与数据库中DateTime对应。
java.sql.Date 只存储日期数据不存储时间数据
// 会丢失时间数据
preparedStatement.setDate(1, new java.sql.Date(date.getTime()));
//可以这样来处理
preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));
//想要得到完整的数据,包括日期和时间,可以这样
java.util.Date d = resultSet.getTimestamp(1);
// 这样处理更合适一些,可以避免一些潜在Timestamp 问题
java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());
java.sql.Date is not a real date:
http://www.thunderguy.com/semicolon/2003/08/14/java-sql-date-is-not-a-real-date/