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但没有成功.
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插件的情况下使用日期工作.这完全是值得的.