Hibernate错误:子树的意外结束选择TIMEDIFF

时间:2014-08-11 09:19:37

标签: java mysql sql hibernate

当我在mysql db中使用以下查询时,它会返回差异时间。

SELECT TIMEDIFF('2007-12-31 10:02:00','2007-12-30 12:01:01');

但是当我在hibernate(hql)中使用相同的查询时,它会抛出以下错误

查询:

hql="SELECT TIMEDIFF('2007-12-31 10:02:00','2007-12-30 12:01:01')";

query = session.createQuery(hql);

错误:

unexpected end of subtree [SELECT TIMEDIFF('2007-12-31 10:02:00','2007-12-30 12:01:01')]

任何人都可以让我知道解决方案,找到时差吗

1 个答案:

答案 0 :(得分:0)

有效的HQL是

select

(days(current_timestamp) *24 + hour(current_timestamp)) -( days(user.lastUpdatedTimeStamp)*24 + hour( user.lastUpdatedTimeStamp))

from com.test.User as user where user.id=1;

这个hql会给出正确的答案,因为它会将对应日期的小时数添加到该特定日期的小时数。

数学上,这将是这样的

((19*24 + 11)  -(18*24 +5)) == 467 – 437 = 30

因此,我们将得到正确答案30。

This可能有用。