当前位置: 代码迷 >> SQL >> java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp总结
  详细解决方案

java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp总结

热度:114   发布时间:2016-05-05 14:18:36.0
java.util.Date、java.sql.Date、java.sql.Time、java.sql.Timestamp小结

转自:http://newleague.iteye.com/blog/936078

java.lang.Object 

....|__java.util.Date 

..........|__java.sql.Date/java.sql.Timestamp /java.sql.Time 

【父类】java.util.Date日期格式为:年月日时分秒 
【子类】java.sql.Date日期格式为:年月日[只存储日期数据不存储时间数据] 
【子类】java.sql.Time日期格式为:时分秒 
【子类】java.sql.Timestamp日期格式为:年月日时分秒纳秒(毫微秒) 

针对不同的数据库选用不同的日期类型 
·Oracle的Date类型,只需要年月日,选择使用java.sql.Date类型 ,有时需要时分秒,就要选择java.sql.Timestamp类型 
·MS Sqlserver数据库的DateTime类型,需要年月日时分秒,选择java.sql.Timestamp类型

------------------------------------------ 

四种对象内部均使用系统时间作为标准数据 
·系统时间:自 1970 年 1 月 1 日 00:00:00 GMT 以来的毫秒数,即格林尼治标准时间(GMT) 
·本地时间:根据时区不同打印出来的时间[当时区为GMT+0时,系统时间与本地时间相同] 

我们使用的是以本地时间为参考标准的 
------------------------------------------ 

生成日期对象 
方法一: 
除了父类,三个子类均可通过给其发送valueOf()消息,生成所需格式的对象。 
java.sql.Date sqlDate = java.sql.Date.valueOf("2010-08-20"); 
java.sql.Time time = java.sql.Time.valueOf("13:44:53"); 
java.sql.Timestamp time = java.sql.Timestamp.valueOf("2010-08-20 14:06:27.186"); 

方法二: 
·java.util.Date——>java.sql.Date 
new java.sql.Date(new java.util.Date().getTime()); 
new java.util.Date(new java.sql.Date().getTime());//此处IDE报错 

·java.util.Date——>java.sql.Timestamp 
new java.sql.Timestamp(new java.util.Date().getTime());//此处IDE报错 

·java.util.Date——>java.sql.Time 
new java.sql.Time(new java.util.Date().getTime()); 

·Timestamp timestamp  = new Timestamp(System.currentTimeMillis()); 

------------------------------------------ 

 我们可以使用DateFormat处理字符串来定义时间日期的格式 
注:String都是先转换为java.util.Date,然后再转换成所需的格式 


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类型 再用getTime()方法得到代表那个Date对象的long值,再以这个long值 构造一个Timestamp对象 存进数据库中。 
       从存数据库里取的时候,可以先得到Timestamp用他的getTime()方法得到long值,再以这个long值构造一个java.util.Date对象,这样就可以对这个Date对象操作了。例如 new SimpleTimeFormat("yyyyy-MM-dd HH:mm:ss").format()等等

  相关解决方案