我想计算数据库中保存的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);
查询正在编译但没有检索它需要的内容,我无法获得它们在我的查询中工作的天数。
另一种(低效)方法是获取所有并循环并计算。
答案 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);