Просто вычтите два значения datetime и умножьте на 24:
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
тестовый сценарий может быть:
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
Это работает, потому что все даты и времени хранятся внутри как пара целых чисел, первое целое число - это количество дней с 1 января 1900 года, а второе целое число (представляющее время) - это количество ( 1 ) тиков с полуночи. (Для SmallDatetimes целое число временной части - это количество минут с полуночи). Любая арифметика со значениями использует временную часть как долю дня. 6 утра = 0,25, полдень = 0,5 и т. Д. Подробнее см. Ссылку MSDN здесь .
Итак, Cast ((@ Dt2 - @ Dt1) as Float) дает вам общее количество дней между двумя датами. Умножьте на 24, чтобы преобразовать в часы. Если вам нужно общее количество минут, умноженное на минуты в день (24 * 60 = 1440) вместо 24 ...
ПРИМЕЧАНИЕ 1. Это не то же самое, что тик dotNet или javaScript - этот тик составляет около 3,33 миллисекунды.