Heim >Datenbank >MySQL-Tutorial >Wie vermeide ich DATEADD-Überlauffehler beim Konvertieren großer JavaScript-Datumsangaben in SQL Server 2008?

Wie vermeide ich DATEADD-Überlauffehler beim Konvertieren großer JavaScript-Datumsangaben in SQL Server 2008?

Susan Sarandon
Susan SarandonOriginal
2024-12-17 22:40:11451Durchsuche

How to Avoid DATEADD Overflow Errors When Converting Large JavaScript Dates in SQL Server 2008?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn