命名查询以按Grails 3.2.10中的日期(年,月,日)显示结果

时间:2018-07-26 19:38:06

标签: date grails groovy named-query

给出此域:

class Burger{
  String description
  Date dateCreated
}

当前,我有一个名为Query

queryOnDateCreated {Date dateArgument ->
        eq 'dateCreated', dateArgument
}

我需要一个查询,该查询允许我查找特定日期的Burger域中的所有对象。创建时只考虑了年,月和日(月),而忽略了小时,分钟,秒和毫秒。

1 个答案:

答案 0 :(得分:0)

经过一些额外的研究,我找到了一个解决方案,我将与之分享,以防它对别人有帮助:

命名查询必须如下:

queryOnDateCreated {Date dateArgument ->
    def dateArgumentIntervalEnd = DateUtils.addMilliseconds(dateArgument + 1, - 1)
    between 'dateCreated', dateArgument, dateArgumentIntervalEnd
}

说明:

“介于”条件返回域中日期在给定间隔之间的每个对象。

由于dateArgument是仅使用年,月和日创建的日期,因此其时间应为00:00:00:000(一天的第一时刻)。

此外,“ dateArgument + 1”保存第二天(同时)的值,这就是为什么要减去1毫秒的原因,这样“ dateArgumentIntervalEnd”将保存同一年,月的值和“ dateArgument”的“天”,但时间将是23:59:59:999,并保持一整天的时间间隔。