2011-08-02 142 views
2

我想找到它映射與下列條件 反對XYZ所有記錄的有日期字段XyzDateTime(其時間戳) 現在currentTime的-xyzDateTime> 20,我想選擇記錄
休眠HQL的時間差

query = session.creatQuery(Select x from XYZ where :currentTime-xyzDateTime > 20) 
query.setParameter("currentTime",new Date()) 

這是正確的嗎?
我可以用這種方式檢查日期差異嗎?

+1

「這是正確的嗎?」 - 當你運行它時它會返回什麼? –

回答

7

這是不正確的。最簡單的解決方案就是這樣(根本不是最漂亮的解決方案)

Date twentyDaysInFuture = new Date(Calendar.getInstance().add(Calendar.DAY_OF_MONTH, 20).getTime()); 

query = session.createQuery("SELECT x FROM XYZ x WHERE xyzDateTime > :endDate").setParameter("endDate", twentyDaysInFuture); 
+0

新日期(System.currentTimeMillis()+ 86400000 * 12)更簡單 - 雖然 –

+2

@Konstantin Pribluda:所有問題都有明顯的,簡單的和錯誤的答案。 – kan