JPQL 查询带间隔的日期

Hay*_*hem 5 java sql hibernate jpa jpql

我正在使用 JPA 和 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)");
Run Code Online (Sandbox Code Playgroud)

我如何告诉 JPQL 过滤他在 2 个日期之间但时间间隔为 4 分钟的数据给我的数据?

我希望这是清楚的。谢谢你的建议。

Art*_*ald 1

您的要求:提供的两个日期之间的差异应至少为四分钟。根据JPA 1.0规范,日期之间的比较表达式必须遵循此模式

日期时间表达式 比较运算符日期时间表达式

其中comparison_operator可以是=、>、>=、<、<=、<>。你能做的是

按如下方式计算您提供的日期之间的差异

Timestamp dateA ...
Timestamp dateB ...

Timestamp difference = new Timestamp(Math.abs(dateA.getTime() - dateB.getTime()));
Run Code Online (Sandbox Code Playgroud)

并创建一个代表 4 分钟的时间戳

Timestamp fourMinutes = new Timestamp(0, 0, 0, 0, 4, 0, 0);
Run Code Online (Sandbox Code Playgroud)

现在你的查询应该是这样的

where :difference >= :fourMinutes
Run Code Online (Sandbox Code Playgroud)