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

spring的hibernate查询日期的语句

select to_date('2011-11-28','yyyy-mm-dd')-to_date('2011-11-01','yyyy-mm-dd') from dual
这句sql语句是从oracle数据库中查询两个日期之间的天数,这句在oracle中运行正常,返回一个整数。可是放在dao持久层查询时不能运行。会说找不到dual,可是应该怎样写sql语句呢。

Java code

public int findBeginEndNum(String begintime,String endtime) {
    try{
String sql="select to_date('"+endtime+"','yyyy-mm-dd')-to_date('"+begintime+"','yyyy-mm-dd') from dual";
        System.out.println(sql);
        this.getHibernateTemplate().find(sql); 【运行到这里就报错】
        //Object obj=this.getHibernateTemplate().find(sql).get(0);
        //if(obj!=null){
        //    return Integer.parseInt(obj.toString());
        //}
    }catch(Exception e){
        e.printStackTrace();
        }
    return 0;
}
    





------解决方案--------------------
我也没试过这个,给你点建议
this.getHibernateTemplate().find(sql); //先试试这句能否运行其他SQL,

或者使用Hibernate中其他运行SQL的方法试试。
------解决方案--------------------
this.getHibernateTemplate().getSessionFactory().getCurrentSession().createSQLQuery(sql);
------解决方案--------------------
探讨
String sql="select to_date('"+endtime+"','yyyy-mm-dd')-to_date('"+begintime+"','yyyy-mm-dd') from dual