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

JPQL - Calculate difference between Timestamps

我想计算数据库中保存的 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);

查询正在编译但未检索到它需要的内容,我无法获得它们在我的查询中工作之间的天数。

另一种(低效)方法是获取所有内容并循环遍历它们并计算。

首先,您需要从当前日期中减去 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);