xqqing79 2011-11-05 02:13
浏览 289
已采纳

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语句呢。

[code="java"]
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;
}

[/code]

  • 写回答

3条回答 默认 最新

  • kingschan 2011-11-05 09:42
    关注

    这是以前做过的 你参考下。

    1.新建类 Dual
    package mypath;
    public class Dual implements Serializable{
    private Long id;
    public Long getId() {
    return this.id;
    }

    public void setId(Long id) {
        this.id=id;
    }
    

    }
    2.建立映射文件
    dual.hbm.xml
    <?xml version="1.0" encoding="GBK"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">



    <!--可以替换-->





    3.注意事项
    用 select sysdate from Dual; 返回的数据类型为java.sql.Date; 精度只到天
    可以用 select to_char(sysdate,'yyyy-MM-dd hh:mm:ss') from Dual;解决

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?