TimeStamp的JPQL avg函数

时间:2014-11-05 10:02:08

标签: hibernate date timestamp average jpql

我需要一个JPQL查询,它应该计算两个日期之间的平均天数。 我写了这样的查询

select avg(ps.begins-ps.ends) from PackStatus ps where ps.status.code = 'serviceExec'
            and ps.gossrvcDocPackage.serviceId = 'Usl_3641042_RSOC'
            and ps.begins between :startDate and :endDate
            and ps.ends between :startDate and :endDate

但系统抛出异常“org.hibernate.exception.DataException:无法执行查询” 如果我放一些其他字段,例如avg(ps.id)它可以正常工作。 在数据库中,ps.ends和ps.begins存储为timestapm。 我如何计算两个日期之间的平均天数? 感谢。

1 个答案:

答案 0 :(得分:0)

找到日期之间的平均差异的正确方法是

select avg(day(ps.ends)-day(ps.begins)) from PackStatus ps where ps.status.code = 'serviceExec'
        and ps.gossrvcDocPackage.serviceId = 'Usl_3641042_RSOC'
        and ps.begins between :startDate and :endDate
        and ps.ends between :startDate and :endDate

此外,你可以找到小时,分钟等的差异。只需在小时()或其他措施上替换day()。