作为一个开发者,使用jdbc是最基本的要求。
但是jdbc对应操作date类型的数据和hibernate是不同的,hibernate不需要考虑date是util .date还是sql.date也不需要考虑存入的date是否存有时分秒了。
建议:Jdbc而言最好的是数据库中的date类型对应的实体类的类型不要date而要string这样好操作,又可以实现日期查询
常用的时间格式在oracle中有 yyyy-mm-ddhh24:mi:ss 而在Java中有些区别为yyyy-MM-dd HH:mm:ss 这点还是经常容易模糊的。
1 存入数据库的方式:
第一种是传入util.date 然后转成sql.date 优点操作简单,在传入util.date的时候日期格式中是包含有有时分秒的,但是转化为sql.date之后就只有年月日了,时分秒就没有了,当你想在前台取出精确的小时的数据时就会发现所有的数据的时分秒都是一样的,都是00:00:00明显不对,输出一看就会发现数据库中存的数据是有年月日,后面的都是默认的数据
所以不建议用这种方式插入数据因为数据存入时对时间的存入是不精确的。
第二种方式:就是通过to_date(字段名,’ yyyy-mm-dd hh24:mi:ss’)
这种方式存入了精确的时间数据。
优点:存入的数据精确度高,就是操作的时候比较麻烦。
推荐使用这种,因为你不知道后面系统的功能要实现到什么程度,而且对后期数据的统计,功能的扩展都有大用。
接下来就到取数据了。
一般的sql查询出来的时间格式默认是yyyy-MM-dd是没有时分秒的。
而且这种取法 直接用rs.getDate(“数据库的字段名”);
select * fromapplyapproval;
而你想要取到精确的时分秒数据时就要这样
注意:这里to_char(applytime,'yyyy-mm-ddhh24:mi:ss') as applytime一定要有as applytime查询出来的字段才是applytime
要不然就会变成这样:
to_char(passapprovaltime,'yyyy-mm-ddhh24:mi:ss')字段就变成这样了,你在jdbc操作取数据时就用以错。
Rs.get是用以出错。
现在还有一点就是容易出错的:我们都认为按上面查询出来的日期数据是date类型,在jdbc这样取:rs.getDate(“applytime”);就可以取到数据,这样的话就会报错。其实这样取回的数据是varchar类型,所以要这样取rs.getString(“applytime”);返回的是Srtring类型