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的,你可以试下。