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

标签 date grails groovy named-query

鉴于此域:

class Burger{
  String description
  Date dateCreated
}

目前,我有这个namedQuery
queryOnDateCreated {Date dateArgument ->
        eq 'dateCreated', dateArgument
}

我需要一个查询,使我可以在只考虑年,月和日(月)的情况下查找具有特定dateCreated的Burger域中的所有对象,而忽略小时,分钟,秒和毫秒。

最佳答案

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

命名查询需要如下:

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

说明:

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

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

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

关于date - 命名查询以按Grails 3.2.10中的日期(年,月,日)显示结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51546358/

相关文章:

grails - 在 View 之间传递记录

grails - 带有自定义X-Auth-Token header 的cURL请求重定向到登录页面

Groovy 获取当前方法注释

groovy - 史波克行为怪异

javascript - 如何停止 Sequelize 转换从 javascript 框架中的数据库中提取的日期

bash - 如何在 bash 中添加两个时间输出

grails - Groovy 混合?

loops - groovy 中的 reverse() 方法仅仅是迭代的抽象吗?

java - 如果 JTable 包含字符串,如何在 JTable 上使用 RowFilter.dateFilter

javascript - 在 Mongoose 模式默认日期值中将月份添加到当前日期