代码中设置的超时机制没有起效,发现是从数据库中取的sql中的date数据到java中的date的值变化了,原因如下:
java代码写的sql语句取到的sql值的类型为Java.sql.Date,该类型在取到值后,会默认的将时分秒去掉,只保留日期,再代码中做的date转换结果就错了。所以,从数据库中取时间的时候,需要先做类型转换,在sql语句中将时间转换为string类型的取出来
to_char(TF_START_TIME, 'yyyy-mm-dd hh24:mi:ss') "stateTime"
然后在代码中,用java.util.Date类型去转换。
static final String DEFAULT_DATE_FORMAT = "yyyy-MM-dd HH:mm:ss";
SimpleDateFormat df = new SimpleDateFormat(DEFAULT_DATE_FORMAT );
Date result= df.parse(value);
这样才能保证值的正确性。
附上一段其他兄弟写的两个类型之间互相转换的东西作为补充:
java.sql.Date转为java.util.Date
java.sql.Date date=new java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());
java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());