2016-01-22 203 views
1

我想計算保存在數據庫中的TIMESTAMPCURRENT_TIMSTAMP之間的差異,並驗證它們之間的天數的數目是否小於給定數字。JPQL - 計算時間戳差異

TypedQuery<Person> q = entityManager.createQuery("SELECT p FROM Person p WHERE (p.createdOn - CURRENT_TIMESTAMP <= :constant))", Person.class); 

p.createdOn由數據庫自動設置。

constant將是差值必須小於的天數。

q.setParameter("constant", 14); 

該查詢編譯但不獲取它所需要,我不能讓他們之間的天我的查詢工作的數量。

另一種(低效率)方法是全部獲取並遍歷它們並計算。

回答

1

首先,您需要從當前日期減去createdOn,而不是反之亦然(否則,結果始終爲負,條件總是計算爲true)。

其次,如果如預期日期操作不工作,你總是可以計算查詢執行前的日期限制,並把它作爲參數:

Date date = // current date minus three days 

TypedQuery<Person> q = entityManager.createQuery("SELECT p FROM Person p WHERE p.createdOn >= :date", Person.class); 
q.setParameter("date", date);