我写了这样的查询
Rule.findAll("FROM Rule WHERE client_id = ? " +
"AND DATE_FORMAT(contract_begins,'%d-%m-%Y') <= ?", [tripStartDate])
但它无法将sql日期与字符串tripStartDate
进行比较,如何解决此问题,如何检查contract_begins是否小于或等于tripStartDate
。
答案 0 :(得分:0)
最简单的方法是从字符串构造一个新的数据对象以传递给查询。假设(我可能会误解)contract_begins被映射为规则
中的日期类型Date tripStart = new SimpleDateFormat("dd-MM-yyyy").parse(tripStartDate)
Rule.findAllByClientAndContractBeginsLessThanEquals(client, tripStart)
或者如果你真的想保留hql而不是动态查找器
Date tripStart = new SimpleDateFormat("dd-MM-yyyy").parse(tripStartDate)
Rule.findAll("FROM Rule WHERE client_id = :clientId AND contract_begins <= :tripStart",
[clientId: client.id, tripStart: tripStart])