Вы можете найти разницу в часах, например:
datediff(hour, startdate, enddate)
И остаток минут:
datediff(minutes, startdate, enddate) % 60
В совокупности это будет выглядеть так:
select cast(datediff(hour, startdate, enddate) as varchar(20)) + ' hours ' +
cast(datediff(minutes, startdate, enddate) % 60 as varchar(20) + ' min.'
Чтобы сделать условное форматирование, вы можете использовать подзапрос:
select case when hours > 1 then cast(hours as varchar(6)) + ' hours'
when hours > 1 then '1 hour'
else ''
end + ' ' +
case when minutes > 1 then cast(minutes as varchar(6)) + ' minutes'
when minutes = 1 then '1 minute'
else '0 minutes'
end
from (
select datediff(hour, startdate, enddate) as hours
, datediff(minutes, startdate, enddate) % 60 as minutes
from YourTable
) as SubQueryAlias
Я оставлю добавление дней в качестве упражнения для читателя;)