Ich habe die folgende Abfrage:SQL Server: datediff Funktion in einem Überlauf in Folge bei der Verwendung von MILLISECOND
select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Wenn ich dies ausführen, erhalte ich die Fehlermeldung:. „Die datediff Funktion in einem Überlauf führte die Nummer von Datateilen, die zwei Datums-/Zeitinstanzen voneinander trennen, ist zu groß. Versuchen Sie, datediff mit einem weniger genauen Datumsteil zu verwenden. "
Wenn ich die Abfrage an die es funktioniert folgende ändern fein:
select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)
Das Problem ist, dass ich wirklich die Millisekunde als auch benötigen.
DATEDIFF gibt eine Ganzzahl zurück, die einfach nicht groß genug ist, um das Ergebnis zu speichern. Der einzige Weg, an den ich denken könnte, wäre herauszufinden, wie viele Tage zwischen den beiden Daten liegen, dann vergleiche nur die Zeitabschnitte der beiden Daten, um herauszufinden, wie viele Millisekunden der Unterschied ist, und addiere die beiden zusammen (multipliziert die Anzahl der Tage mit der Anzahl der Millisekunden an einem Tag). – Alan
Seitennotiz: Arbeiten Sie in einem Bereich, in dem eine Art von Tageslicht eingespart wird? Da an vielen Orten während der von Ihnen betrachteten Zeit ein Wechsel zwischen Sommerzeit und Sommerzeit stattgefunden hat, wird dies von SQL Server nicht berücksichtigt. Sie könnten also ein Ergebnis erhalten, das genau auf die Millisekunde, aber eine ganze Stunde lang genau ist. –
hat eine der Antworten Ihr Problem gelöst? Wenn dies der Fall ist, akzeptieren Sie bitte –