我正在使用HQL从现在起21天内完全插入数据。这里是我的代码如何从HQL查询中减去当前日期的天数
Query queryThreeWeek = session.createQuery("from Users where createdDate = CURDATE()-21");
List<Users> userDetailsThreeWeekList = queryThreeWeek.list();
我不能使用createSQLQuery
。 现在我没有收到任何数据,但是有数据为2016-06-20
。这是因为当月改变了,因为当我使用CURDATE()-7
时,我得到了日期2016-07-04
的正确数据。 dat的计算就像;
2016-07-11 - 7 = 20160704
2016-07-11 - 21 = 20160690
我也使用
INTERVAL
其是用于
native sqlQuery
累
。这是我在HQL使用INTERVAL
代码:
Query queryThreeWeek = session.createQuery("from Users where createdDate = DATE(DATE_SUB(NOW() , INTERVAL 21 DAY))");
List<Users> userDetailsThreeWeekList = queryThreeWeek.list();
也试过
Query queryThreeWeek = session.createQuery("from Users where createdDate = DATE(DATE_SUB(CURDATE() , INTERVAL 21 DAY))");
List<Users> userDetailsThreeWeekList = queryThreeWeek.list();
,但它给我的异常,如:org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: 21
。
那么我可以用什么来代替减去这样的日子:CURDATE()-21
?在HQL只有
我得到意外的标记:21 – Shivam
我在MySQL的测试这样的,似乎是正确的 选择DATE(DATE_SUB (CURDATE(),INTERVAL 21 DAY)); – scaisEdge
但这不是我正在做的方式,我得到的是:org.hibernate.hql.internal.ast.QuerySyntaxException:意外的令牌:21 – Shivam