Maison > base de données > tutoriel mysql > Comment éviter les erreurs de débordement arithmétique lors de l'utilisation de DATEADD avec Bigints dans SQL Server ?

Comment éviter les erreurs de débordement arithmétique lors de l'utilisation de DATEADD avec Bigints dans SQL Server ?

DDD
Libérer: 2024-12-29 17:29:11
original
218 Les gens l'ont consulté

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

Gestion des erreurs de dépassement arithmétique avec DATEADD et Bigints

La fonction DATEADD dans SQL Server est un outil puissant pour manipuler les dates et les heures. Cependant, il peut rencontrer des erreurs de dépassement arithmétique lorsque vous travaillez avec de grands entiers.

Problème :

Un utilisateur a tenté de convertir une date JavaScript en date SQL à l'aide de la requête suivante. :

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))
Copier après la connexion

Cependant, cela a abouti à un exception :

Arithmetic overflow error converting expression to data type int
Copier après la connexion

Solution :

Pour éviter l'erreur de débordement, il est recommandé de diviser l'opération DATEADD en étapes plus petites, en utilisant des unités de temps plus grossières comme les secondes ou minutes comme point de départ. Cela permet au système de gérer les calculs du calendrier plus efficacement.

Par exemple, la requête suivante calculera une heure de début à partir d'une durée d'une milliseconde :

-- Avoid using weeks or months due to calendar irregularities

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))
Copier après la connexion

Cette approche garantit que les opérations arithmétiques sont effectué dans les limites du type de données entier, évitant ainsi les erreurs de débordement.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal