日期:2014-05-17  浏览次数:20770 次

java调用存储过程的问题
这个存储过程里面是根据id和一些其他的相关业务的id,以及对应的时间,找到这张表中的id,这几个字段都是在一张表中的.java中得到的是一个长整型的数,再转换为util.Date,再将其转换为sql.Date来调用存储过程,在这个存储过程中,要将传入参数中的id匹配上并且将条件的时间在输入参数的时间-1和+1之间,但是发现一个问题,就是找的时候压根就没有把时间细化为时分秒,而是直接找年月日去了,测试格式化的时候打印出来的时间也是对的,系统时间也是对的,求问
部分伪代码如下
Long dateLong=3456789;
Date dat=new Date(dateLong);
String procedure = "{call query_bks_match_and_team(?,?,?,?,?,?,?,?,?)}"; 
CallableStatement call = conn.prepareCall(procedure); 
java.sql.Date date=new java.sql.Date(temp.getMatchTime().getTime());

call.setLong(1,temp.getId());
call.setDate(2, date);
call.setString(3, temp.getHomeName().trim());
call.setString(4, temp.getAwayName().trim());

------解决方案--------------------
据我所知,sql.Date没有时分秒。跟oracle版本没关系。
------解决方案--------------------
用java.sql.TimeStamp来处理时间
------解决方案--------------------
java文档:


public class Dateextends Date
一个包装了毫秒值的瘦包装器 (thin wrapper),它允许 JDBC 将毫秒值标识为 SQL DATE 值。毫秒值表示自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。 

为了与 SQL DATE 的定义一致,由 java.sql.Date 实例包装的毫秒值必须通过将小时、分钟、秒和毫秒设置为与该实例相关的特定时区中的零来“规范化”。