如何针对Grails中的Joda LocalDate查询月和日

时间:2015-08-31 12:56:25

标签: hibernate grails jodatime

当持久化数据类型为二进制(255)时,如何根据Joda LocalDate对象的月和日组件有效执行查询。

我想要完成的是找到'客户'其dateOfBirth(LocalDate)发生在今天的日期(LocalDate)。

似乎不可能使用Criteria查询,并使用诸如

之类的查询回退到HQL
def startDate = LocalDate.now()

      def entries = Customer.executeQuery("SELECT c FROM Customer AS c " +
              "WHERE DAY(c.dateOfBirth) = DAY(:today) AND " +
              "MONTH(c.dateOfBirth) = MONTH(:today) ",[today:startDate])

因为LocalDate类型。

1 个答案:

答案 0 :(得分:0)

使用sqlRestriction

def startDate = LocalDate.now()

def entries = Customer.withCriteria{
   sqlRestriction 'DAY(dateOfBirth) = DAY(now()) AND MONTH(dateOfBirth) = MONTH(now())'
}

允许您将SQL与Criteria混合使用。您的数据库中应包含day()month()now()个函数,但您必须检查