выберите заявление получить продолжительность времени - PullRequest
1 голос
/ 13 января 2010

допустим, у меня есть таблица, похожая на ниже

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

Могу ли я узнать, возможно ли использовать 1 оператор выбора sql для записи минут 2 из 1 и получить затраченное время? или используйте hibernate.criteria для этого?

1 Ответ

1 голос
/ 13 января 2010

как то часами

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] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...