在GORM Grails中保存和查询日期

C0d*_*ack 3 grails date grails-orm

我有一个数据库表TableA,它有一个列'theDate',数据库中的数据类型是DATE.

当我通过GORM将java.util.Date保存到'theDate'时,当我通过从TableA执行select*来查看表中的数据时,它似乎只保存日期值.

但是,当我运行如下查询时:

select * from TableA where theDate = :myDate
Run Code Online (Sandbox Code Playgroud)

没有找到结果,但是如果我运行的话;

select * from TableA where theDate <= :myDate
Run Code Online (Sandbox Code Playgroud)

我确实得到了结果.

所以就像时间是相关的.

我的问题是如何保存日期和查询完全忽略时间的日期,只是在确切的日期匹配?

谢谢.

注意:我也尝试过使用sql.Date和util.Calendar但没有成功.

Rob*_*ska 7

clearTime()

您可以clearTime()在保存之前和比较零时间字段之前使用:

// zero the time when saving
new MyDomain(theDate: new Date().clearTime()).save()

// zero the target time before comparing
def now = new Date().clearTime()
MyDomain.findAll('SELECT * FROM MyDomain WHERE theDate = :myDate', [myDate: now])
Run Code Online (Sandbox Code Playgroud)

joda-time插件

另一种方法是安装joda-time插件并使用LocalDate类型(只保存日期信息,没有时间)而不是Date.对于它的价值,我不认为我在没有使用Joda插件的情况下使用日期工作.这完全是值得的.