Maison >base de données >tutoriel mysql >Comment éviter les erreurs de débordement DATEADD lors de la conversion de dates JavaScript volumineuses dans SQL Server 2008 ?

Comment éviter les erreurs de débordement DATEADD lors de la conversion de dates JavaScript volumineuses dans SQL Server 2008 ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 22:40:11351parcourir

How to Avoid DATEADD Overflow Errors When Converting Large JavaScript Dates in SQL Server 2008?

Débordement de DATEADD avec de grands entiers

Les utilisateurs de SQL Server 2008 peuvent rencontrer une « erreur de dépassement arithmétique » lors de la conversion de grandes dates JavaScript en dates SQL à l'aide la fonction DATEADD. L'erreur se produit lorsque la valeur dépasse la taille maximale d'un type de données entier.

La requête incriminée :

DATEADD(MILLISECOND, cast(569337307200000 as bigint) % 1000, DATEADD(SECOND, cast(569337307200000 as bigint) / 1000, '19700101'))

Pour résoudre ce problème, divisez le DATEADD en incréments plus petits. Commencez avec une unité de temps plus grande (secondes, minutes ou heures), puis ajustez en fonction des millisecondes restantes. Évitez d'utiliser des semaines ou des mois car cela implique des calculs de calendrier complexes.

Considérez l'exemple suivant :

-- Handle large durations by subtracting minutes and then remaining milliseconds.

DATEADD(ms, -large_duration_ms%60000, DATEADD(minute, -large_duration_ms/60000, GETDATE()))

Cette technique permet de calculer des heures de début avec des durées extrêmement longues sans 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!

Déclaration:
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