2012-11-27 299 views
6

我需要一个jpql查询来查找所有的LoadFileHistory,它的finishDate大于当前日期(自00:00:00开始)。例如大于27/11/2012 00:00:00。今天jpql比较日期

我已经有这个“从LoadFileHistory o选择o o.finishDate = CURRENT_DATE”,但没有得到任何东西。

+1

如果你想要那些更大的为什么不用'''而不是'='? – Alex

+0

亚历克斯put = CURRENT_DATE的想法是,比较是与日期,但与时间不同。我的意思是,只是27/11/2012不是27/11/2012 10:15:00 – Manuel

回答

19

你应该得到今天的日期,如查询详细here(java.util.Date具有时,分,秒太...)

的你应该把它提供给你的查询:

Query q = em.createQuery("select o from LoadFileHistory o where o.finishDate > :today "); 
q.setParameter("today",todaysDateObject,TemporalType.DATE); 
q.getResultList(); 
+4

'CURRENT_DATE'被评估为当前日期。请参阅:http://www.objectdb.com/java/jpa/query/jpql/date – Alex

0

如果您正在查找带日期的时间级别过滤。这对我有效。

Date now = DateUtils.addMinutes(new Date(), -15); 
Query q = em.createQuery("Select u From Users u Where u.dateCreated > :today"); 
q.setParameter("today",now,TemporalType.TIMESTAMP); 

DateUtils是apache常见的。

+0

...或者您可以在不添加外部依赖关系的情况下使用它并使用java.time ...'Instant.now()。减号(Duration.ofMinutes(15))' – Jules

相关问题