我有一个字符串:
"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()。但这将变得非常缓慢和混乱。
答案 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
。