JPQL - 计算时间戳之间的差异

时间:2016-01-22 19:56:26

标签: java mysql jpa jpql

我想计算数据库中保存的TIMESTAMPCURRENT_TIMSTAMP之间的差异,并验证它们之间的天数是否小于给定数量。

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 个答案:

答案 0 :(得分: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);