SQL Server: fonction datediff a entraîné un dépassement de capacité lors de l'utilisation de la MILLISECONDE

J'ai la requête suivante :

select CONVERT(varchar(12), DATEADD(MILLISECOND, DateDiff(MILLISECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)

Lorsque j'exécute ceci, j'obtiens l'erreur :
"La fonction datediff a entraîné un dépassement de capacité. Le nombre de dateparts séparant deux date/heure de cas est trop grand. Essayez d'utiliser datediff avec un moins précis datepart."

Lorsque je change la requête à la suivante, il fonctionne très bien :

select CONVERT(varchar(12), DATEADD(SECOND, DateDiff(SECOND, '2014-08-04 10:37:28.713','2014-11-04 08:21:17.723'), 0), 114)

Le problème est que j'ai vraiment besoin de MILLISECONDES.

DATEDIFF retourne un entier, ce qui n'est tout simplement pas assez grand pour contenir le résultat. La seule façon que je peux penser serait pour savoir combien de jours il y a entre les deux dates, puis faire une comparaison uniquement sur les portions du temps des deux dates pour savoir combien de millisecondes de différence il y a, et ajouter les deux ensemble (en multipliant le nombre de jours par le nombre de millisecondes dans une journée).
Remarque: vous travaillez dans un domaine qui s'applique à certains type de l'heure d'été? Parce que dans beaucoup d'endroits, il y a eu une transition entre on/off de l'heure d'été au cours de la période, vous êtes en train de regarder et SQL Server ne sera pas le prendre en compte. Donc, vous pourriez vous retrouver avec un résultat qui est "exacte" de l'ordre de la milliseconde, mais par une heure entière.
avez la réponse à résoudre votre problème ? Si oui, veuillez l'accepter
c'est pourquoi vous devriez normaliser la date de l'information sur la DB niveau record, et de les transformer de manière appropriée dans la présentation à la locale de l'utilisateur.

OriginalL'auteur Bart Schelkens | 2014-11-04