0

我有一个字符串是:

"may 2013"

这是指五月二日。我正在尝试获取日期为 5 月 2 日的所有 PostOrder 实例。

到目前为止我已经尝试过:

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()。但这会变得非常缓慢和混乱。

4

1 回答 1

1

第一点。根据文档ilike()是不区分大小写的“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)
}

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

于 2013-04-10T10:00:12.393 回答