Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date 在Grails 3.2.10中按日期(年、月、日)显示结果的命名查询_Date_Grails_Groovy_Named Query - Fatal编程技术网

Date 在Grails 3.2.10中按日期(年、月、日)显示结果的命名查询

Date 在Grails 3.2.10中按日期(年、月、日)显示结果的命名查询,date,grails,groovy,named-query,Date,Grails,Groovy,Named Query,鉴于该领域: class Burger{ String description Date dateCreated } 目前,我有一个命名查询 queryOnDateCreated {Date dateArgument -> eq 'dateCreated', dateArgument } 我需要一个查询,它允许我查找域Burger中所有对象,创建的特定日期只考虑accountYear、Month和day(of Month),而忽略小时、分钟、秒、毫秒。经过一些额

鉴于该领域:

class Burger{
  String description
  Date dateCreated
}
目前,我有一个命名查询

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

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

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

命名查询需要如下所示:

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

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

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

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

或者您可以使用:user(TimeCategory){}以更轻松地编辑日期