Heim > Datenbank > MySQL-Tutorial > Wie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit Bigints in SQL Server?

Wie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit Bigints in SQL Server?

DDD
Freigeben: 2024-12-29 17:29:11
Original
218 Leute haben es durchsucht

How to Avoid Arithmetic Overflow Errors When Using DATEADD with Bigints in SQL Server?

Umgang mit arithmetischen Überlauffehlern mit DATEADD und Bigints

Die DATEADD-Funktion in SQL Server ist ein leistungsstarkes Tool zum Bearbeiten von Datums- und Uhrzeitangaben. Bei der Arbeit mit großen Ganzzahlen kann es jedoch zu arithmetischen Überlauffehlern kommen.

Problem:

Ein Benutzer hat versucht, mit der folgenden Abfrage ein JavaScript-Datum in ein SQL-Datum umzuwandeln :

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Nach dem Login kopieren

Es kam jedoch zu einem Ausnahme:

Arithmetic overflow error converting expression to data type int
Nach dem Login kopieren

Lösung:

Um den Überlauffehler zu vermeiden, wird empfohlen, den DATEADD-Vorgang in kleinere Schritte zu unterteilen und gröbere Zeiteinheiten wie Sekunden zu verwenden oder Minuten als Ausgangspunkt. Dadurch kann das System die Kalenderberechnungen effizienter durchführen.

Zum Beispiel berechnet die folgende Abfrage eine Startzeit aus einer Millisekundendauer:

-- Avoid using weeks or months due to calendar irregularities

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
Nach dem Login kopieren

Dieser Ansatz stellt sicher, dass arithmetische Operationen ausgeführt werden Wird innerhalb der Grenzen des Integer-Datentyps durchgeführt, um Überlauffehler zu vermeiden.

Das obige ist der detaillierte Inhalt vonWie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit Bigints in SQL Server?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage