select语句获取持续时间

时间:2010-01-13 03:29:34

标签: sql database hibernate

假设我的表格如下所示

actionTable
-----------
id, user, actionName, time
1 , userX, startdoing,  1/1/2010 9am
2, userX, endDoing,     2/1/2010 10am

我可以知道是否可以使用1 sql select语句从1分钟记录2并花费时间?或者使用hibernate.criteria来做到这一点?

1 个答案:

答案 0 :(得分:1)

这样的事情好几个小时

select s.[user], datediff(hh,s.time,e.time) as duration
from actiontable s
join actiontable e on s.[user] = e.[user] and e.actionname = 'enddoing'
where s.actionname = 'startdoing' 

给我这个:

user       duration
---------- -----------
userX      745

更改为datediff(minute,s.time,e.time)会给出此

user       duration
---------- -----------
userX      44700

如果您只有一个开始和结束时间,这将适用于整个用户表及其开始和结束时间...如果您没有一个,那么它会变得更复杂一些 - 简单的方法(使用mssql 2005+)就是这样做:

;with sitems as
(
  select [user], max([time]) as [time]
  from actiontable
  where actionname = 'startdoing'
  group by [user]
), eitems as
(
  select [user], max([time]) as [time]
  from actiontable
  where actionname = 'enddoing'
  group by [user]
)
select s.[user], datediff(minute,s.time,e.time) as duration
from sitems s
join eitems e on s.[user] = e.[user]