Maison >base de données >tutoriel mysql >Comment éviter les erreurs de dépassement arithmétique lors de l'utilisation de DATEADD avec de gros Bigints ?
Surmonter le débordement arithmétique dans DATEADD avec Bigints
Rencontrer des erreurs de débordement arithmétique lors de l'utilisation de DATEADD avec de grandes valeurs bigint peut être frustrant. Pour résoudre ce problème, une solution de contournement appropriée consiste à effectuer l'opération DATEADD en plusieurs étapes, en commençant par une unité de temps plus grossière comme les secondes ou les minutes.
Comme souligné dans une erreur rencontrée, ajouter directement une valeur bigint trop grande à une expression de date peut déclencher une erreur de dépassement arithmétique. Pour surmonter cela, nous pouvons décomposer l'opération en étapes plus petites :
Pour exemple, pour calculer une heure de démarrage étant donné une durée de courant importante (millisecondes) :
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;
En utilisant cette méthode en plusieurs étapes approche, nous pouvons éviter les erreurs potentielles de débordement et calculer avec précision les dates à partir de grandes valeurs bigint.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!