String hql="from Users u where u.downloadTime BETWEEN '"+startTime+"' and '"+endTime+"' ORDER BY u.downloadTime";
我这样写的是查询一个时间范围,hibernate语句可以顺利的通过mysql和sqlserver,但是到oracle就报错了,说是无效月份,怎么解决 

解决方案 »

  1.   

       Oracle中日期存储格式是月-日-年,日期格式不一致!
      

  2.   

    startTime和endTime是什么类型的,对他格式化一下
      

  3.   

    String hql="from Users u where to_char(u.downloadTime,'yyyy-mm-dd') BETWEEN '"+startTime+"' and '"+endTime+"' ORDER BY u.downloadTime";
      

  4.   

    上边的朋友,这总和那个方式我刚试过了,可以,但是他又不支持mysql和sqlserver了,有没有通用一点的
      

  5.   

     String hql="from Users u where u.downloadTime BETWEEN to_date("+new SimpleDateFormat("yyyy-MM-dd").format(startTime)+",'yyyy-MM-dd') and to_date("+new SimpleDateFormat("yyyy-MM-dd").format(endTime)+",'yyyy-MM-dd') ORDER BY u.downloadTime";
      

  6.   

    不好意思,刚太急,失误了,应该是这:String hql="from Users u where u.downloadTime BETWEEN to_date("+new SimpleDateFormat("你的日期格式").format(startTime)+",'yyyy-MM-dd') and to_date("+new SimpleDateFormat("你的日期格式").format(endTime)+",'yyyy-MM-dd') ORDER BY u.downloadTime";
      

  7.   

    String hql="from Users u where u.downloadTime BETWEEN to_date("+new SimpleDateFormat("你的数据库日期格式").format(startTime)+",'你的数据库日期格式') and to_date("+new SimpleDateFormat("你的数据库日期格式").format(endTime)+",'你的数据库日期格式') ORDER BY u.downloadTime";还请高手 给指点下:用java如何获取不同数据库的格式