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

08-04 06:36