【问题标题】:JPQL - Calculate difference between TimestampsJPQL - 计算时间戳之间的差异
【发布时间】:2016-01-22 19:56:26
【问题描述】:

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

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

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

【问题讨论】:

    标签: java mysql jpa jpql


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2014-05-04
      • 2015-03-14
      • 1970-01-01
      相关资源
      最近更新 更多