当我在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')]
任何人都可以让我知道解决方案,找到时差吗
答案 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可能有用。