Dai un'occhiata a questi. Non ho usato più parentesi per tenerlo leggibile, quindi ricorda che la moltiplicazione viene eseguita prima di aggiungere o sottrarre.
sia al di sotto di ritorno:
hr mins sec timediff
73 12 30 73:12:30
Questo è scritto di non utilizzare un sub-query e di essere il più leggibile e comprensibile:
declare @StartDate datetime,
@EndDate datetime
set @StartDate = '10/01/2012 08:40:18.000'
set @EndDate = '10/04/2012 09:52:48.000'
select datediff(hour, @StartDate, @EndDate) hr,
datediff(minute, @StartDate, @EndDate)
- datediff(hour, @StartDate, @EndDate) * 60 mins,
datediff(second, @StartDate, @EndDate)
- (datediff(minute, @StartDate, @EndDate) * 60) sec,
cast(datediff(hour, @StartDate, @EndDate) as varchar)+':'+
cast(datediff(minute, @StartDate, @EndDate)
- datediff(hour, @StartDate, @EndDate) * 60 as varchar)+':'+
cast(datediff(second, @StartDate, @EndDate)
- (datediff(minute, @StartDate, @EndDate) * 60) as varchar) timediff
Questa è una versione che potrebbe funzionare meglio se si avere molti dati Richiede una sotto-query.
declare @StartDate datetime,
@EndDate datetime
set @StartDate = '10/01/2012 08:40:18.000'
set @EndDate = '10/04/2012 09:52:48.000'
select s.seconds/3600 hrs,
s.seconds/60 - (seconds/3600) * 60 mins,
s.seconds - (s.seconds/60) * 60 seconds,
cast(s.seconds/3600 as varchar) + ':' +
cast((s.seconds/60 - (seconds/3600) * 60) as varchar) + ':' +
cast((s.seconds - (s.seconds/60) * 60) as varchar) timediff
from (select datediff(second, @StartDate, @EndDate) as seconds) s
possibile duplicato di [periodo Calcolo con T-SQL] (http://stackoverflow.com/questions/758891/calculating-timespan- with-t-sql) – Pfitz