日期:2014-05-19  浏览次数:20982 次

createCriteria()多条件查询并含Date类型
现在就是在查date类型时出了点问题,不知道怎么查询:
Java code

 String sdate="yyyy-MM-DD HH:mm:ss"
 SimpleDateFormat sf=new SimpleDateFormat(sdate);
   def sendTime=params.get("sendTime")
   def sentTime=params.get("sentTime")
   dSendTime=sf.parse(sendTime)//转换 打印出来的值却是这样Tue Jan 10 15:10:15 CST 2012
                                //数据库中的日期实际上是2012-12-12 12:10:10.0 这样子
   dSentTime=sf.parse(sentTime)
  def search={
                if(dSendTime&&dSentTime){
                    and{
                        ge("sendTime",dSendTime) //大于等于
                    }
                    and{
                        le("sentTime",dSentTime) //小于等于
                    }
                 }
                if (dSendTime){
                    eq("sendingTime",dSendTime) //等于
                }
                if (dSentTime){
                    eq("sentTime",sentTime)
                }
                if(pipeId){
                    like("pipeId",pipeId)
                }
                if (userId){
                    like("userId",userId)
                }
                if (operatorId){
                    like("operatorId",operatorId)
                }
                if (fromAction){
           
                if (respCode){
                    like("respCode",respCode)
                }
                if (respMsg){
                    like("respMsg",respMsg)
                }
            }
            def result=CodeDetails.createCriteria().list(params,search)


现在加上日期查询后,总是报错,请问我要怎么处理这里的日期查询?

------解决方案--------------------
首先,你要走出一个误区,
你要查询某一天的时间,页面上肯定是2012-12-12类似这样的数据,不带时分秒,
而数据库中的类型如果是日期类型的,那存放的日期肯定是2012-12-12 00:00:00:0 类似这样的格式,
这时候你用eq直接去查询某一天的,那是肯定查询不到任何结果的,
所以在查询某一天的话,可以用like。
还有就是那个时间段的查询,大于小于我记得不是很清楚能不能这样写,但是时间段查询一般都是用between的,你可以试下。