2011-03-22 198 views
3

我正在使用JPA和JPQL。而我在這個世界是新的;-) 我的查詢現在給我的數據在2日期之間。JPQL查詢日期,間隔

Query query =em.createQuery("SELECT d FROM DTable d JOIN d.history p WHERE (d.vehicle.id = :vehicleId) AND (p.timestamp BETWEEN :curentDate AND :date)"); 

我怎麼能告訴JPQL對數據進行篩選,他給我的數據2日期間,但有4分鐘的時間間隔?

我希望很清楚。 感謝您的建議。

+0

我的意思是在結果中,兩個p.timestamp之間至少有4分鐘的差異。 – Haythem 2011-03-22 12:31:42

+0

你能舉個例子嗎?我不明白你的數據是什麼,你的預期結果是什麼。 – 2011-03-22 15:36:38

+0

這是我的結果: 週二3月22日十七時39分52秒CET 2011 週二3月22日17點37分52秒CET 2011 週二3月22日十七時35分52秒CET 2011 週二3月22日17時33分52秒CET 2011 週二3月22日17時31分52秒CET 2011 週二3月22日17點29分52秒CET 2011 ,我需要這樣的: 週二3月22日17時39分52秒CET 2011 週二3月22日17:35: 52 CET 2011 Tue Mar 22 22:31:52 CET 2011 Tue Mar 22 22:27:52 CET 2011 – Haythem 2011-03-22 16:47:56

回答

1

您的要求:兩個提供的日期之間的差異應爲至少四分鐘。根據JPA 1.0規範,日期之間的比較表達式必須遵循此模式

datetime_expression comparison_operator datetime_expression

在哪裏comparison_operator可以=,>,> =,<,< =,<>。你可以做的是

走差異化您提供的日期之間如下

Timestamp dateA ... 
Timestamp dateB ... 

Timestamp difference = new Timestamp(Math.abs(dateA.getTime() - dateB.getTime())); 

,並創建一個Timestamp代表4分鐘

Timestamp fourMinutes = new Timestamp(0, 0, 0, 0, 4, 0, 0); 

現在查詢應該看起來像

where :difference >= :fourMinutes 
+0

感謝它有幫助,但我不知道 時間戳dateA 時間戳dateB在我要求的查詢中數據和此數據應該在日期c和今天之間,並且我只需要日期間隔爲4分鐘的數據。對不起,我的問題並不清楚。 – Haythem 2011-03-23 16:10:46