2014-11-19 1 views
1

я хочу, чтобы получить разницу даты в часах и минутах и ​​добиться того, что я использовал этот запрос в SQL Server:Дата Рассчитать между двумя датой и суммой затем конвертировать в часах и минутах

Cast(SUM(DATEDIFF(second, fromtime, totime)/60/60 % 24) as varchar(20)) + ' hours ' 
+CAST(SUM(DATEDIFF(second, fromtime, totime)/60 % 60)as varchar(20))+' minutes ' as [TotalTime] 

Он возвращает следующий выход:

TotalTime 
--------------------- 
16 Hours 120 Minutes 
3 Hours 90 Minutes 

но ожидаемый результат:

TotalTime 
---------------------- 
18 Hours 0 Minutes 
4 Hours 30 Minutes. 
Может

кто поможет мне решить эту проблему?

+0

Ваш запрос верный, он должен вернуть ожидаемый выход !! –

+0

Опубликовать значения выборки в секундах и времени – Veera

+1

Я проверил запрос с образцами и вернул ожидаемый результат. –

ответ

1

Ваш запрос является идеальным, все, что вам нужно сделать, это написать внешний запрос по нему. Что-то вроде ниже

select case when t.minutes>60 then t.hours+(t.minutes/60) else t.hours end as hours, 
     case when t.minutes>60 then t.minutes%60 else t.minutes end as minutes 
from 
(
select 
Cast(SUM(DATEDIFF(second, fromtime, totime)/60/60 % 24) as varchar(20)) as hours 
+CAST(SUM(DATEDIFF(second, fromtime, totime)/60 % 60)as varchar(20)) as minutes 
from tablename 
)as t