我试图使用domain.executeUpdate从表中删除1个月大的记录,如下所示

Bugrerun.executeUpdate("delete Bugrerun b where b.complete = 1 and b.date
< date_sub(curdate(), INTERVAL 1 MONTH) ")

我试图在查询中使用MySQL日期函数。

但这失败并显示错误
org.hibernate.hql.ast.QuerySyntaxException: unexpected token: 1 near line 1
, column 97

我们如何在executeUpdate语句中使用My SQL日期时间函数

请注意,此表包含大量数据,因此无法获取和删除单个记录

最佳答案

您可以实现自己的数据库方言以包含该功能。

另一个选择是执行此操作:

Calendar cal = Calendar.getInstance();
cal.setTime(new Date());
cal.add(Calendar.MONTH, -1);

Bugrerun.executeUpdate("delete Bugrerun b where b.complete = 1 and b.date
< :oneMonthAgo", [oneMonthAgo: cal.time])

关于mysql - 如何在Grails内部使用MySQL时间函数executeupdate,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18271468/

10-09 05:42