有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java 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) 个答案

  1. # 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);