Java Date and Time系列(四)- java.sql.Date/java.sql.Time/java.sql.Timestamp介绍

java.sql.Date

java.sql.Date是在JDBC中使用的日期类,在JDBC操作中,如果需要设置一个日期或者从ResultSet获取日期值,就需要使用到java.sql.Date。实际上java.sql.Date继承自java.util.Date,是java.util.Date的一个子类,所以java.util.Date可以调用的方法在java.sql.Date中也可以调用。

创建一个java.sql.Date实例也像java.util.Date一样简单:

long time = System.currentTimeMillis();
java.sql.Date date = new java.sql.Date(time);
那么java.util.Date和java.sql.Date之间到底有什么区别呢?它们之间最大的区别就是:java.util.Date是一个日期和时间的完整表示,java.sql.Date只表示日期而不包含时间,比如java.util.Date实例可以表示2013-11-30 21:11:30.034,但java.sql.Date实例却只能表示2013-11-30。如果试图在java.util.Date实例上调用和时间相关的方法将会抛出一个java.lang.IllegalArgumentException异常:
long timeNow = System.currentTimeMillis();
java.sql.Date sDate = new java.sql.Date(timeNow);
sDate.getHours(); //抛出java.lang.IllegalArgumentException

java.sql.Time

java.sql.Time是JDBC中用来表示时间的类,它也是java.util.Date的子类,可以像下面一样创建一个Time实例:

long timeNow = System.currentTimeMillis();
java.sql.Time time = new java.sql.Time(timeNow);
和java.sql.Date的道理一样,这个类只能表示时间却不能包含日期部分,如果试图在java.sql.Time实例上调用和日期相关的方法
将会抛出一个java.lang.IllegalArgumentException异常:
long timeNow = System.currentTimeMillis();
java.sql.Time time = new java.sql.Time(timeNow);
time.getYear();  //抛出java.lang.IllegalArgumentException

所以,如果在JDBC中需要像java.util.Date一样能够完整表示日期和时间,那么应该考虑使用java.sql.Timestamp,而不是java.sql.Date或java.sql.Time。


java.sql.Timestamp

java.sql.Timestamp也是继承自java.util.Date,它和java.util.Date一样既能表示日期也能表示时间。java.sql.Timestamp和java.util.Date的一个区别就是java.util.Date只能表示到毫秒级,而java.sql.Timestamp能表示到纳秒级。

long time = System.currentTimeMillis();
java.sql.Timestamp timestamp = new java.sql.Timestamp(time);

timestamp.setNanos(123456);
int nanos = timestamp.getNanos(); // nanos = 123456


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值