2013-02-13 3 views
2

J'ai simplement besoin de prendre deux objets datetime, soustrayez-les pour obtenir le décalage horaire en heures. Je ne me soucie pas de la partie date dans le calcul. Si vous avez 1/1/02 11:00:00 - 01/01/02 9:00:00 alors j'obtiendrais 2 comme résultat. Si la différence est égale ou supérieure à 30, arrondissez à 1. Les objets temporels que j'utilise sont l'heure actuelle et une colonne contenant l'autre objet datetime.Find Différence de temps entre 2 datetimes ignorant la partie de date

+0

Dans sql server 2012, vous pouvez convertir un datetime comme une heure. sélectionnez CAST (getdate() comme heure). Si j'étais en 2008, j'essaierais au moins. Ensuite, vous pouvez utiliser datediff selon les deux réponses. –

+0

@DanBracuk SQL Server 2008 a le type de données 'TIME' – Lamak

Répondre

1

Dans SQL Server 2008 vous pouvez utiliser le TIME type de données:

SELECT ABS(ROUND(DATEDIFF(MI,CONVERT(TIME,date1), CONVERT(TIME,date2))/60.0,0)) 
+0

cela fonctionne comme un charme! Merci :) – user1732364

0

Si les questions de direction de temps utilisez:

SELECT DATEDIFF(hour, <date1>, <date2>) % 24... 

Ou si vous voulez juste la différence de temps absolu:

SELECT ABS(DATEDIFF(hour, <date1>, <date2>) % 24)... 
+0

Manqué l'arrondi. @Lamak a la meilleure réponse. – Granger44

Questions connexes