2011-08-02 102 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