Il suffit de soustraire les deux valeurs de date et de les multiplier par 24 :
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
un test script pourrait être :
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
Cela fonctionne parce que toutes les dates sont stockées en interne sous la forme d'une paire d'entiers, le premier entier étant le nombre de jours depuis le 1er janvier 1900, et le second entier (représentant l'heure) étant le nombre de ( 1 ) tiques depuis minuit. (Pour les SmallDatetimes, l'entier de la partie temps est le nombre de minutes depuis minuit). Toute arithmétique effectuée sur les valeurs utilise la portion de temps comme une fraction de jour. 6h du matin = 0,25, midi = 0,5, etc... Voir Lien MSDN ici pour plus de détails.
Ainsi, Cast((@Dt2 - @Dt1) as Float) vous donne le nombre total de jours entre deux dates. Multipliez par 24 pour convertir en heures. Si vous avez besoin du total des minutes, multipliez par Minutes par jour (24 * 60 = 1440) au lieu de 24...
NOTE 1 : Ce n'est pas la même chose qu'un tick dotNet ou javaScript - ce tick est d'environ 3,33 millisecondes.