这样的代码:
比如enddate="2007-3-12"
这样hibernate查询的条件是<=2007-3-12 00:00:00,也就是说,我梦必须在页面上选择右边界为2007-3-13,才能正确查询出3.12的数据,但这并不符合我们的使习惯
if
(endDate
!=
null
&&!
endDate.equals(
""
))
...
{
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
try...{
Date date=sf.parse(endDate);
dc.add(Restrictions.le("actualenddate", enddate));
}catch(Exception e)...{
e.printStackTrace();
}
}
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
try...{
Date date=sf.parse(endDate);
dc.add(Restrictions.le("actualenddate", enddate));
}catch(Exception e)...{
e.printStackTrace();
}
}
解决方法有两个
(1)使用SQL
select startdate,actualenddate from busi_info where actualenddate<=to_date('2007-05-08 23:59:59','YYYY-MM-DD HH24:MI:SS');
(2) 在代码中给日期加1,使用Calendar
if
(endDate
!=
null
&&!
endDate.equals(
""
))
...
{
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
try...{
Date date=sf.parse(endDate);
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(c.DATE,1);
Date enddate=c.getTime();
dc.add(Restrictions.le("actualenddate", enddate));
}catch(Exception e)...{
e.printStackTrace();
}
}
SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd");
try...{
Date date=sf.parse(endDate);
Calendar c=Calendar.getInstance();
c.setTime(date);
c.add(c.DATE,1);
Date enddate=c.getTime();
dc.add(Restrictions.le("actualenddate", enddate));
}catch(Exception e)...{
e.printStackTrace();
}
}