Subtrahieren Sie einfach die beiden Datums- / Uhrzeitwerte und multiplizieren Sie sie mit 24:
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
Ein Testskript könnte sein:
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
Dies funktioniert, weil alle Datenzeiten intern als Paar von Ganzzahlen gespeichert werden, die erste Ganzzahl die Anzahl der Tage seit dem 1. Januar 1900 und die zweite Ganzzahl (die die Zeit darstellt) die Anzahl der ( 1 ) Ticks seit Mitternacht ist. (Für SmallDatetimes ist die Zeitanteils-Ganzzahl die Anzahl der Minuten seit Mitternacht). Jede Arithmetik, die mit den Werten durchgeführt wird, verwendet den Zeitanteil als Bruchteil eines Tages. 6 Uhr morgens = 0,25 Uhr, 12 Uhr mittags = 0,5 Uhr usw. Weitere Informationen finden Sie hier unter MSDN-Link .
Cast ((@ Dt2 - @ Dt1) als Float) gibt Ihnen also die Gesamtzahl der Tage zwischen zwei Datumsangaben. Mit 24 multiplizieren, um in Stunden umzurechnen. Wenn Sie insgesamt Minuten benötigen, multiplizieren Sie mit Minuten pro Tag (24 * 60 = 1440) anstelle von 24 ...
HINWEIS 1 : Dies ist nicht dasselbe wie ein dotNet- oder JavaScript-Tick - dieser Tick beträgt ungefähr 3,33 Millisekunden.