Heim > Datenbank > MySQL-Tutorial > Wie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit großen Bigints?

Wie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit großen Bigints?

Linda Hamilton
Freigeben: 2025-01-05 10:47:40
Original
358 Leute haben es durchsucht

How to Avoid Arithmetic Overflow Errors When Using DATEADD with Large Bigints?

Arithmetischer Überlauf in DATEADD mit Bigints überwinden

Arithmetische Überlauffehler bei der Verwendung von DATEADD mit großen Bigint-Werten können frustrierend sein. Um dieses Problem zu beheben, besteht eine geeignete Problemumgehung darin, den DATEADD-Vorgang in mehreren Schritten auszuführen, beginnend mit einer gröberen Zeiteinheit wie Sekunden oder Minuten.

Wie in einem aufgetretenen Fehler hervorgehoben, wird direkt ein zu großer Bigint-Wert hinzugefügt Ein Datumsausdruck kann einen arithmetischen Überlauffehler auslösen. Um dies zu umgehen, können wir den Vorgang in kleinere Schritte aufteilen:

  1. Subtrahieren Sie zuerst die größere Zeiteinheit:Bestimmen Sie die Anzahl der im Bigint-Wert enthaltenen Sekunden oder Minuten mithilfe von Modulo-Berechnungen . Subtrahieren Sie diesen Wert vom Datumsausdruck.
  2. Fügen Sie eine feinere Zeiteinheit hinzu: Verwenden Sie DATEADD, um die verbleibenden Millisekunden zum in Schritt 1 erhaltenen Ergebnis hinzuzufügen.

Für Beispiel, um eine Startzeit bei einer großen Stromdauer (Millisekunden) zu berechnen:

DECLARE @large_duration_ms BIGINT = 569337307200000;

-- Step 1: Subtract minutes (60000ms)
-- (a) Determine number of minutes
DECLARE @minutes_to_subtract BIGINT = @large_duration_ms / 60000;

-- (b) Subtract minutes
DECLARE @start_time_minutes DATETIME = DATEADD(MINUTE, -@minutes_to_subtract, GETDATE());

-- Step 2: Add remaining milliseconds
DECLARE @milli_seconds_to_add BIGINT = @large_duration_ms % 60000;
DECLARE @start_time_final DATETIME = DATEADD(MILLISECOND, @milli_seconds_to_add, @start_time_minutes);

SELECT @start_time_final;
Nach dem Login kopieren

Durch die Verwendung dieses mehrstufigen Ansatzes, Wir können potenzielle Überlauffehler vermeiden und Datumsangaben aus großen Bigint-Werten genau berechnen.

Das obige ist der detaillierte Inhalt vonWie vermeide ich arithmetische Überlauffehler bei der Verwendung von DATEADD mit großen Bigints?. 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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage