2010-01-19 6 views
0

J'ai deux champs de date avec times.They sontTrouver le temps la durée

1.2008-06-09 10: 18: 00,000

2.2008-06-10 11: 20: 00.000

Je pour trouver la différence entre les deux dates ci-dessus dans le format -

« 24 heures: 2 minutes: 0 secondes »

est-il une méthode pour obtenir ce résultat dans SQL Server 2000?

+0

Faut-il pas 25 heures? – gbn

Répondre

2

Pas de réponse de fantaisie dans SQL Server 2000 ...

DECLARE @d1 datetime, @d2 datetime 

SELECT @d1 = '2008-06-09 10:18:00.000', @d2 = '2008-06-10 11:20:00.000' 

SELECT 
    CAST(DATEDIFF(hour, @d1, @d2) AS varchar(30)) + ' hours, ' + 
    CAST(DATEDIFF(minute, @d1, @d2) % 60 AS varchar(30)) + ' minutes, ' + 
    CAST(DATEDIFF(second, @d1, @d2) % 3600 % 60 AS varchar(30)) + ' seconds' 

Les modulos sont nécessaires pour éliminer les heures et les minutes déjà calculées

+0

Je crois que vous devez prendre en compte le franchissement des frontières lorsque la plus petite unité est moins dans '@ d2' que dans' @ d1'. Par exemple, changez les minutes de '@ d2' en 15 et vérifiez vos résultats. –

+1

Ces modifications devraient fonctionner: 'CAST (DATEDIFF (deuxième, @ d1, @ d2)/3600 AS varchar (30)) + 'heures,' + CAST (DATEDIFF (deuxième, @ d1, @ d2)/60% 60 AS varchar (30)) + 'minutes,' + CAST (DATEDIFF (deuxième, @ d1, @ d2)% 3600% 60 AS varchar (30)) + 'secondes'' –

Questions connexes