2011-06-10 67 views
0

我寫這樣的查詢如何在Grails的SQL日期

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

比較字符串,但它不能在SQL日期字符串tripStartDate,如何解決這個問題的比較,如何檢查contract_begins是小於或等於tripStartDate

+0

訣竅是讓Hibernate做爲你工作。 – 2011-06-10 13:01:27

回答

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