2010-07-25 3 views
0

Je suis en train d'obtenir le résultat du temps et à temps de dates mais il ne retourne que les heures suivantes en utilisant requête de sélection comme suitComment obtenir Date de diffrence en format hh: mm Dans Sélectionner une requête Sql 2005

SELECT DATEDIFF(Hh,InTime,OutTime) as Diff_time from EmpLogTable 

et j'ai besoin entraîner HH: MM Supposons que mon temps est de 11 heures et est à 17h49 donc o/p serait 6,49, mais en utilisant ci-dessus requête de sélection Je reçois o/p comme 7 uniquement si un organisme a une solution alors s'il vous plaît faites le moi savoir

En vous remerciant à l'avance Umesh Rakhe

Répondre

0
SELECT Outime - InTime as Diff_time from EmpLogTable 

DATEDIFF mesure jour, heure limites de etc: vous demandez une vraie différence de date/heure. Dans ce cas, je soustrais simplement les valeurs plutôt que d'utiliser un DATEDIFF imbriqué complexe. Ou le faire chez le client.

Si vous avez un intervalle> 24 heures, alors vous aurez besoin d'un DATEDIFF imbriqué pour obtenir 25 heures: ma réponse donnerait un jour et une heure.

hh: nn: ss peut se faire via CONVERT with style 108, mais encore une fois je ferais ceci dans le client

+0

Ce n'est pas correct. datediff (mi, '2010-07-25 12:00:00', '2009-07-25 12:00:00') = -525600 –

+0

@el chef: la soustraction est différente de DATEDIFF. Qu'est-ce que tu essayes de dire? – gbn

1

La fonction DATEDIFF retourne un INT il ne fonctionnera pas comme vous le souhaitez, votre meilleur pari est pour soustraire InTime de OutTime ou utiliser DATEDIFF avec minutes (n) à la place.

1
  1. vous devriez probablement faire le formatage de l'interface utilisateur sur le client, et non pas la base de données

  2. vous pouvez utiliser diff = datediff (mi, INTIME, outtime) pour obtenir la différence en quelques minutes

puis diviser diff par 60 pour obtenir les heures

et de prendre le module diff% 60 pour obtenir les minutes restantes

puis transformer en chaînes et vous êtes prêt à aller

Questions connexes