Java 如何获取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

我有一个名为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_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函数似乎不受支持。