Grails匹配日期

时间:2013-04-09 12:03:19

标签: date grails criteria

我有一个字符串:

"may 2013"

这是指五月二日。我试图获取PostOrder的所有实例,其中日期是5月的第二个。

到目前为止我尝试过:

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

请注意我已将字符串拆分,因此sp [1]为2013,我已解析了May,因此月份变量不是05。

上述尝试不起作用。

我知道的唯一方法就是抓住所有物体并为它们各做一件事。将dateCreated解析为字符串然后执行.contains()。但这将变得非常缓慢和混乱。

1 个答案:

答案 0 :(得分:1)

第一点。根据{{​​3}},ilike()是一个不区分大小写的“喜欢”表达式 - 请参阅documentation。所以,它不能接受约会。你需要的只是eq()

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

另一点。构造函数Date() SQL LIKE Operator年份减去1900年作为第一个参数。因此,您可能需要从1900中减去new Integer(sp[1])。 此外,该构造函数已弃用;我建议使用GregorianCalendar(new Integer(sp[1]), new Integer(month), 1).time