如何将字符串与grails中的sql日期进行比较

时间:2011-06-10 11:21:31

标签: grails

我写了这样的查询

Rule.findAll("FROM Rule WHERE client_id = ? " +
    "AND DATE_FORMAT(contract_begins,'%d-%m-%Y') <= ?", [tripStartDate])

但它无法将sql日期与字符串tripStartDate进行比较,如何解决此问题,如何检查contract_begins是否小于或等于tripStartDate

1 个答案:

答案 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])