用的是sybase数据库,需要从数据库中查询记录时间在beginDate和endDate之间的数据,具体的代码如下String hql = "from VlrMeas m where m.id.instanceId=1 and (m.id.measTime>"+beginDate+" and m.id.measTime<="+endDate+")";;其中beginDate和endDate是传入的java.util.Date类型的参数,po中VlrMeas 的measTime也是Date类型,可是当我试图执行这个hql的时候就会发生错误,
传入的beginDate和endDate在拼接好的hql中的形式是“Thu May 28 12:00:24 CST 2009”这个样子。
我需要怎么做才可以让这个hql顺利执行查询出beginDate和endDate之间的时间段的值呢?大家帮我想想办法。
由于我把问题简化了。实际问题比这个东西要复杂很多。所以只能使用这种用String拼接hql的办法。请大家帮帮忙。谢谢啦
传入的beginDate和endDate在拼接好的hql中的形式是“Thu May 28 12:00:24 CST 2009”这个样子。
我需要怎么做才可以让这个hql顺利执行查询出beginDate和endDate之间的时间段的值呢?大家帮我想想办法。
由于我把问题简化了。实际问题比这个东西要复杂很多。所以只能使用这种用String拼接hql的办法。请大家帮帮忙。谢谢啦
解决方案 »
- 讨论数据缓冲池
- 如何搭建jsp 服务器运行环境?
- 咨询一个正则表达式
- 控件问题,请指教!
- 如何提取网页元素和相应的链接地址程序
- Eclipse+Tomcat :Starting tomcat v7.0 server at locahost has encountered a proble
- 一个ant问题,请高手进来看看:)
- 请教高手:通过代码设置了classpath,如何让它起作用??
- weblogic7.0重启后jsp文件打开慢的问题?
- 多线程的synchrchronized锁(基本)
- 求一个Struts2的helloworld完整程序
- 急急急急急急急急 tomcat5.5.28在suse上如何配置远程调试
你写出这样把
String hql = "from VlrMeas m where m.id.instanceId=1 and m.id.measTime>:beginDate and m.id.measTime <= :endDate";session.createQuary(hql).setDate("beginDate",beginDate).setDate("endDate", endDate)......
这样应该就可以啦
首先建议入库时间都是用Date类型,别使用String类型,Hibernate会自动根据方言把Date类型转化成你所用数据库的表现方式的,String会超级的麻烦,而且不利于程序的移植!
你可以通过DateFormat这个类去进行String和Date类型的转换,最终要得效果是
m.id.measTime>Date是最理想的也是最适合移植的!
关于DateFormat怎么用你可以去看看API,很好很强大的辅助类
http://gceclub.sun.com.cn/Java_Docs/jdk6/docs/zh/api/java/text/class-use/DateFormat.html