按日期过滤记录时忽略时间部分

时间:2016-04-27 13:34:17

标签: grails gorm

我客户的数据库已经很老了。例如,旧的DATE列仅包含Date值。但在升级之后,它现在可以支持DateTime值。我有一个名为LAST_UPDATED_DATE的专栏,其值可以从2001-08-162016-04-28 12:00:12不等。前者插入到旧版本的数据库中,而后者则是升级版本。

我在Grails上执行搜索条件,其中需要检索特定日期的行,例如,去年4月25日更新的行。问题是如何?我可以做类似的事情:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate = formatter.parse("2016-04-25");

ArrayList records = Table.createCriteria().list {
    ...
    eq("lastUpdatedDate", parsedDate)
    ...
}

但并非所有当天的参赛作品都会被选中。将选择的唯一记录是时间为00:00:00的记录。如何在该日期选择所有记录,无论他们的时间如何?

1 个答案:

答案 0 :(得分:2)

搜索当天午夜和下一个午夜之间的时间段:

SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date parsedDate = formatter.parse("2016-04-25");

ArrayList records = Table.createCriteria().list {
    ...
    ge("lastUpdatedDate", parsedDate)
    lt("lastUpdatedDate", parsedDate + 1)
    ...
}