Simplemente reste los dos valores de fecha y hora y multiplíquelos por 24:
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
un script de prueba podría ser:
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
Esto funciona porque todas las fechas y horas se almacenan internamente como un par de números enteros, el primer número entero es el número de días desde el 1 de enero de 1900 y el segundo número entero (que representa el tiempo) es el número de ( 1 ) tics desde la medianoche. (Para SmallDatetimes, el entero de la porción de tiempo es el número de minutos desde la medianoche). Cualquier aritmética realizada con los valores usa la porción de tiempo como una fracción de un día. 6 am = 0.25, mediodía = 0.5, etc ... Vea el enlace de MSDN aquí para obtener más detalles.
Entonces Cast ((@ Dt2 - @ Dt1) as Float) le da el total de días entre dos fechas. Multiplica por 24 para convertir a horas. Si necesita minutos totales, múltiples por minutos por día (24 * 60 = 1440) en lugar de 24 ...
NOTA 1 : Esto no es lo mismo que una marca de dotNet o javaScript; esta marca es de aproximadamente 3,33 milisegundos.