Comment manipuler une valeur datetime renvoyée dans T-SQL

Je dois déterminer le time moyen nécessaire à notre équipe de traitement des commands pour traiter les commands.

Je prévois de simplement countr le nombre de "secondes" entre les PaidDateUtc " PaidDateUtc " et " ShippedDateUtc " pour chaque command, puis get la moyenne.

Ma requête simplifiée (less le filter de plage de dates) est comme ceci:

 SELECT dbo.Shipment.ShippedDateUtc - dbo.[Order].PaidDateUtc AS TimeToFulfill FROM dbo.[Order] INNER JOIN dbo.Shipment ON dbo.[Order].Id = dbo.Shipment.OrderId 

La valeur renvoyée ressemble à ceci:

 1900-01-01 00:25:27.263 

Ce qui signifie: 1 jour, 1 heure, 25 minutes et 27 secondes

Ma question est: Comment puis-je la manipuler pour que la valeur returnnée ressemble à ceci:

 91527 --(total of seconds) 

De la syntaxe, il semble que vous utilisiez Microsoft SQL Server ou Sybase, et si c'est le cas, vous pouvez utiliser la fonction DATEDIFF pour get la quantité de secondes entre la command et l'expédition comme suit:

 SELECT DATEDIFF(second, o.PaidDateUtc, s.ShippedDateUtc) AS TimeToFulfill FROM dbo.[Order] o INNER JOIN dbo.Shipment s ON o.Id = s.OrderId 

Si vous voulez le nombre moyen de secondes pour chaque command envelopper le DATEDIFF dans AVG() avec le group by order.id :

 SELECT o.id, AVG(DATEDIFF(second, o.PaidDateUtc, s.ShippedDateUtc)) AS TimeToFulfill FROM dbo.[Order] o INNER JOIN dbo.Shipment s ON o.Id = s.OrderId GROUP BY o.id 

Utilisez datediff() pour le time en secondes. Votre requête semblera également plus simple si vous utilisez des alias de table:

 SELECT DATEDIFF(SECOND, o.PaidDateUtc, s.ShippedDateUtc) AS TimeToFulfill FROM dbo.[Order] o INNER JOIN dbo.Shipment s ON o.Id = s.OrderId;