2011-03-22 196 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