DATEADD-Überlauf mit großen Ganzzahlen
Benutzer von SQL Server 2008 können beim Konvertieren großer JavaScript-Daten in SQL-Daten mit einem „Arithmetischen Überlauffehler“ auftreten die DATEADD-Funktion. Der Fehler tritt auf, wenn der Wert die maximale Größe eines ganzzahligen Datentyps überschreitet.
Die fehlerhafte Abfrage:
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Um dieses Problem zu beheben, teilen Sie DATEADD in kleinere Inkremente auf. Beginnen Sie mit einer größeren Zeiteinheit (Sekunden, Minuten oder Stunden) und passen Sie sie dann um die verbleibenden Millisekunden an. Vermeiden Sie die Verwendung von Wochen oder Monaten, da dies komplexe Kalenderberechnungen erfordert.
Betrachten Sie das folgende Beispiel:
-- Handle large durations by subtracting minutes and then remaining milliseconds. DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
Diese Technik ermöglicht die Berechnung von Startzeiten mit extrem langer Dauer ohne Überlauffehler.
Das obige ist der detaillierte Inhalt vonWie vermeide ich DATEADD-Überlauffehler beim Konvertieren großer JavaScript-Datumsangaben in SQL Server 2008?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!