Arithmetische Überlauffehler mit DATEADD und Bigints überwinden
Bei der Verwendung von SQL zum Konvertieren von JavaScript-Daten in SQL-Daten treten Komplikationen auf, wenn mit übermäßig großen Daten gearbeitet wird Daten, was zu arithmetischen Überlaufausnahmen führt. Um dieses Problem zu beheben, betrachten Sie die folgende SQL-Anweisung:
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Durch die Aufteilung von DATEADD in zwei Phasen, beginnend mit einer größeren Zeiteinheit wie Minuten und dann Reduzierung auf die gewünschten Millisekunden, wird das Überlaufproblem umgangen. Vermeiden Sie den Rückgriff auf Monate oder Wochen, da diese Kalenderberechnungen beinhalten.
Betrachten Sie beispielsweise die Berechnung einer Startzeit basierend auf einer großen aktuellen Dauer in Millisekunden:
-- two-step process to prevent overflow -- subtract minutes (60000ms) as a first step -- then subtract the remaining milliseconds DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
Durch Aufschlüsselung der DATEADD in kleinere Schritte aufteilen, können wir große Datenwerte effektiv verarbeiten und den arithmetischen Überlauffehler beheben.
Das obige ist der detaillierte Inhalt vonWie können wir arithmetische Überlauffehler verhindern, wenn wir DATEADD mit großen Millisekundenwerten in SQL verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!