Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Calculer la somme de Datetime en HH:MM:SS en sql

Je pense que vous vouliez convertir en temps (ou datetime si votre version de SQL Server ne le prend pas en charge), plutôt qu'en varchar.

Mais, c'est une très mauvaise façon de faire cela. 25:01:01 ne sera pas une date/heure valide. Vous devez résumer les secondes (comme suggéré dans une autre réponse), puis formater les résultats comme vous le souhaitez à la fin.

Ainsi, dans votre première requête, incluez une autre colonne qui correspond à la durée en secondes :

, DateDiff(s,[Start Date] , [End Date]) as [Ticket Type Seconds]

Ensuite, dans la deuxième requête, formatez simplement SUM([Ticket Type Seconds]), peut-être comme ceci :

STR(SUM([Ticket Type Seconds])/3600) 
+ RIGHT(CONVERT(char(8),DATEADD(s,SUM([Ticket Type Seconds]),0),108),6)

Cela vous donne les heures (qui peuvent être supérieures à 24), concaténées avec la partie ':MM:SS' de la date/heure que vous obtenez lorsque vous convertissez les secondes (ajoutées à la date 0 :19000101 00:00:00) en dateheure.