JPQL - 计算时间戳之间的差异
JPQL - Calculate difference between Timestamps
我想计算数据库中保存的 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);
我想计算数据库中保存的 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);