Просто відніміть два значення дати і часу і помножте на 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) як Float) дає вам загальну кількість днів між двома датами. Помножте на 24, щоб перевести в години. Якщо вам потрібна загальна кількість хвилин, помножте на хвилини на день (24 * 60 = 1440) замість 24 ...
ПРИМІТКА 1 : Це не те саме, що галочка dotNet або javaScript - ця галочка становить приблизно 3,33 мілісекунди.