Maison >base de données >tutoriel mysql >Comment pouvons-nous éviter les erreurs de dépassement arithmétique lors de l'utilisation de DATEADD avec de grandes valeurs en millisecondes dans SQL ?
Surmonter les erreurs de dépassement arithmétique avec DATEADD et Bigints
Lors de l'utilisation de SQL pour convertir des dates JavaScript en dates SQL, des complexités surviennent lorsqu'il s'agit de données trop volumineuses. données, conduisant à des exceptions de débordement arithmétique. Pour résoudre ce problème, considérez l'instruction SQL suivante :
DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Décomposer le DATEADD en deux étapes, en commençant par une unité de temps plus grande comme les minutes, puis en la réduisant aux millisecondes souhaitées, évite le problème de débordement. Évitez de recourir à des mois ou des semaines car ceux-ci impliquent des calculs calendaires.
Par exemple, considérons le calcul d'une heure de début basée sur une grande durée de courant en millisecondes :
-- 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()))
En décomposant le DATEADD en étapes plus petites, nous pouvons gérer efficacement des valeurs de données volumineuses et résoudre l'erreur de débordement arithmétique.
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!