我正在使用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