Basta sottrarre i due valori datetime e moltiplicarli per 24:
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
uno script di test potrebbe essere:
Declare @Dt1 dateTime Set @Dt1 = '12 Jan 2009 11:34:12'
Declare @Dt2 dateTime Set @Dt2 = getdate()
Select Cast((@Dt2 - @Dt1) as Float) * 24.0
Questo funziona perché tutti i datetimes sono memorizzati internamente come una coppia di numeri interi, il primo numero intero è il numero di giorni dal 1 gennaio 1900 e il secondo numero intero (che rappresenta l'ora) è il numero di ( 1 ) tick dalla mezzanotte. (Per SmallDatetimes la parte intera del tempo è il numero di minuti trascorsi dalla mezzanotte). Qualsiasi aritmetica eseguita sui valori utilizza la porzione di tempo come frazione di un giorno. 6am = 0.25, mezzogiorno = 0.5, ecc ... Vedi link MSDN qui per maggiori dettagli.
Quindi Cast ((@ Dt2 - @ Dt1) as Float) ti dà i giorni totali tra due datetimes. Moltiplica per 24 per convertire in ore. Se hai bisogno di minuti totali, più minuti al giorno (24 * 60 = 1440) invece di 24 ...
NOTA 1 : non è la stessa cosa di un segno di spunta dotNet o javaScript: questo segno di spunta è di circa 3,33 millisecondi.