2013-04-09 80 views
0

我有一個字符串,它是:Grails的匹配日期

"may 2013" 

這是指五月的第二個。我正在嘗試獲取PostOrder的所有實例,其中日期是五月的第二個。

我迄今爲止嘗試:

def t = new Date(new Integer(sp[1]), new Integer(month), 01) 
def results = PostOrder.createCriteria().list() { 
    ilike('dateCreated', t ) 
} 

請注意,所以SP [1]是2013,我已經分析了五月我已經分割字符串所以一個月變量不是05

上述嘗試不起作用。

我知道唯一可行的方法就是抓住所有對象併爲它們做每個對象。解析dateCreated爲一個字符串,然後做一個.contains()。但是這會變得非常緩慢和混亂。

+0

ilike在約會? 1到31之間怎麼樣? – 2013-04-09 12:06:27

+0

對不起,我應該說dateCreated是Date類型 – Sagarmichael 2013-04-09 12:22:00

回答

1

第一點。根據documentationilike()是不區分大小寫的'like'表達式 - 請參閱SQL LIKE Operator。所以,它不能接受日期。你需要的只是eq()

def t = new Date(new Integer(sp[1]), new Integer(month), 1) 
def results = PostOrder.createCriteria().list() { 
    eq('dateCreated', t) 
} 

另一點。作爲第一個參數的年份減去1900的構造函數Date()accepts。所以,你可能需要從new Integer(sp[1])減去1900。 另外,該構造函數已被棄用;我會建議使用GregorianCalendar(new Integer(sp[1]), new Integer(month), 1).time