【问题标题】:How to compare date using createCriteria without the time如何在没有时间的情况下使用 createCriteria 比较日期
【发布时间】:2016-11-11 07:49:58
【问题描述】:

我在数据库中有以下记录

2016-07-08 11:30:36

我正在编写以下标准来比较日期,但我没有得到任何结果,因为我认为它可能也在比较时间部分。

    Date reminderDate = new Date()
    println reminderDate //This prints: Fri Jul 08 12:45:56 EDT 2016
    def result = criteria.list {
        eq('expireDate', reminderDate)
    }

【问题讨论】:

  • 我认为你不能平等地做到这一点。我认为您必须在同一天的 00.00.01 和 23.59.59 范围内搜索,所以 gele 一起搜索
  • @Apostolos 我认为使用between 更优雅(见我的回答)
  • @Donal 是的,是的,只是想排除相等性:) 或者可以选择比较字段的日期部分,正如 jja 指出的那样

标签: hibernate grails hibernate-criteria


【解决方案1】:

您可以使用以下内容:

Date reminderDate = new Date().clearTime() 
println reminderDate // This prints: Fri Jul 08 00:00:00 EDT 2016

def result = criteria.list { 
  ge('expireDate', reminderDate) 
} 

【讨论】:

    【解决方案2】:

    我会这样做:

    Date startOfToday = new Date().clearTime()
    Date startOfTomorrow = startOfToday + 1
    
    def result = criteria.list {
        between 'expireDate', startOfToday, startOfTomorrow
    }
    

    【讨论】:

      【解决方案3】:

      试试sqlRestriction 喜欢:

      sqlRestriction 'date(expire_date) = ?', [reminderDate.format('YYYY-MM-dd')]
      

      请注意,您必须使用数据库列名称(我猜是expire_date),而不是HQL 或GORM 属性名称(expireDate)。您可能需要修改数据库的日期格式。

      【讨论】:

        猜你喜欢
        • 2021-12-23
        • 1970-01-01
        • 1970-01-01
        • 2021-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        相关资源
        最近更新 更多