Java 如何获取HQL中两条记录之间的运行时间
我有一个名为TIME_OF_CREATION的表USERS。我想得到第一条记录和第二条记录之间经过的时间,然后是第三条记录,依此类推。我有这个SQL查询,但我需要在HQL中使用它Java 如何获取HQL中两条记录之间的运行时间,java,sql-server-2008,hibernate,hql,Java,Sql Server 2008,Hibernate,Hql,我有一个名为TIME_OF_CREATION的表USERS。我想得到第一条记录和第二条记录之间经过的时间,然后是第三条记录,依此类推。我有这个SQL查询,但我需要在HQL中使用它 WITH rows AS ( SELECT *, ROW_NUMBER() OVER (ORDER BY TIME_OF_CREATION) AS rn FROM users ) SELECT DATEDIFF(second, mc.TIME_OF_CREA
WITH rows AS
(
SELECT *, ROW_NUMBER() OVER (ORDER BY TIME_OF_CREATION) AS rn
FROM users
)
SELECT DATEDIFF(second, mc.TIME_OF_CREATION, mp.TIME_OF_CREATION)
FROM rows mc
JOIN rows mp
ON mc.rn = mp.rn - 1
我试过这个:
with rows as (select u, row_number() over (order by u.timeOfCreation) as u.rn
from users ) select dateDiff(millisecond,u.timeOfCreation,u.timeOfCreation)
from rows u.mc join rows u.mp on u.mc.rn = u.mp.rn - 1
我得到了一个java.lang.IllegalArgumentException:要遍历的节点不能为null
有人能帮我得到HQL版本吗?我是HQL的初学者,因此任何帮助都将不胜感激。
提前非常感谢如果使用
lag()
函数(访问前一行),基本SQL查询会容易得多。问题是,我实际上使用的是SQL SERVER 2008,而lag函数似乎不受支持。