Po prostu odejmij dwie wartości daty i godziny i pomnóż przez 24:
Select Cast((@DateTime2 - @DateTime1) as Float) * 24.0
skrypt testowy może wyglądać następująco:
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
Działa to, ponieważ wszystkie daty są przechowywane wewnętrznie jako para liczb całkowitych, pierwsza liczba całkowita to liczba dni od 1 stycznia 1900 r., A druga liczba całkowita (reprezentująca czas) to liczba ( 1 ) taktów od północy. (W przypadku SmallDatetimes liczba całkowita części czasu to liczba minut od północy). Wszelkie działania arytmetyczne na wartościach wykorzystują czas jako ułamek dnia. 6 rano = 0,25, południe = 0,5, itd ... Zobacz łącze MSDN tutaj, aby uzyskać więcej informacji.
Więc Cast ((@ Dt2 - @ Dt1) as Float) daje całkowitą liczbę dni między dwoma datami. Pomnóż przez 24, aby zamienić na godziny. Jeśli potrzebujesz całkowitej liczby minut, Wiele minut dziennie (24 * 60 = 1440) zamiast 24 ...
UWAGA 1 : To nie to samo, co znacznik dotNet lub javaScript - ten czas tikowania wynosi około 3,33 milisekundy.