Mam następujące zapytanie:SQL Server: DateDiff funkcja spowodowało przepełnienie podczas korzystania milisekundy
select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Kiedy wykonać to, pojawia się błąd: „. Funkcja DateDiff spowodowało przepełnienie liczby datepartów oddzielających dwie instancje daty/czasu jest zbyt duża. Spróbuj użyć datatedart z mniej dokładnym datepartem. "
Kiedy zmienić zapytanie do następujących działa dobrze:
select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Problemem jest to, że naprawdę muszę milisekundy, jak również.
DATEDIFF zwraca liczbę całkowitą, która po prostu nie jest wystarczająco duża, aby pomieścić wynik. Jedynym sposobem, jaki mogę wymyślić, to ustalenie, ile dni upływa między tymi datami, a następnie porównanie tylko części czasowych tych dwóch dat w celu sprawdzenia, ile jest różnicy milisekund, i dodanie tych dwóch razem (pomnożenie liczby dni przez liczbę milisekund w ciągu dnia). – Alan
Uwaga boczna: Czy pracujesz w obszarze, który stosuje oszczędności w ciągu dnia? Ponieważ w wielu miejscach nastąpiło przejście między włączaniem/wyłączaniem czasu letniego w danym okresie, a SQL Server nie bierze tego pod uwagę. Możesz więc uzyskać wynik "dokładny" do milisekundy, ale wyłączony o całą godzinę. –
czy któraś z odpowiedzi rozwiązała Twój problem? Jeśli tak, proszę zaakceptować –