java jdbc连接oracle数据库,sql语句处理时间代码的问题
**最近做一个数据库迁移的项目,就是把原有的数据迁移到一个新的库中,其中事件处理方面各种类型的时间数据,因此在这里做一个小结
sqlmsg = "SELECT DATA FROM wds.telemetrywaterlevelhour WHERE id=? "
+ "AND MEASCODE=? and appliedtime=? "
这个代码中的applied time传的应该是java.sql.date数据,而不是java.util.date数据,两者的区别在于sql.date只精确到天,util.date精确到秒的级别。或者直接传递timestamp类型的数据,timestamp是精确到秒级别的。
为此,我再次做了一个总结,关于各种时间数据的转换关系:
1.Date和Timestamp是父子类关系,timestamp 转化为date,这里先把字符串按照格式转化为date类型的变量 :
//Date或者String转化为时间戳
SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time="1970-01-06 11:45:55";
Date date = format.parse(time);
System.out.print("Format To times:"+date.getTime());
2.date 转化为timestamp
Timestamp ts = new Timestamp(date.getTime());
- Calendar 与Date 的互相转化,实际开发过程中calendar类也用的十分频繁,我们使用calendar.getTime()将calendar转化为date类型数据
Date date = calendar.getTime();Date date = calendar.getTime();
4.date转calendar
`calendar.setTime(date);`
5.calendar转timestamp:这个可以以date类型转为中间转换,先将timestamp转位date,再将date转为calendar:如
`Timestamp ts= new Timestamp(calendar.getTime().getTime())`
jdbc 操作数据库是最底层的技术,做这个项目的过程中还是遇到了一些问题,以后有机会再一一总结下来!