xqqing79
2011-11-05 02:13 阅读 277
已采纳

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条回答 默认 最新

  • 已采纳
    u011633363 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;解决

    点赞 评论 复制链接分享
  • u011633363 kingschan 2011-11-05 09:39

    你的hibernate orm 映射配置文件里面没有 dual的相关相信 再说dual表这个表是虚拟的表,有些系统变量放在里面,没有结构....

    点赞 评论 复制链接分享
  • oyj7454103 oyj7454103 2011-11-05 10:26

    java代码实现!(因为你都知道两个日期了 为什么还要去数据库跑一次呢!)

    [code="java"]public int findBeginEndNum(String [color=red]begintime[/color],String endtime)[/code]

    点赞 评论 复制链接分享

相关推荐