web-dev-qa-db-fra.com

Oracle - Meilleure instruction SELECT pour obtenir la différence en minutes entre deux colonnes DateTime?

J'essaie de répondre à une demande de rapport plutôt difficile d'un client, et j'ai besoin de trouver pour obtenir la différence entre deux colonnes DateTime en quelques minutes. J'ai essayé d'utiliser trunc et round avec divers formats et je n'arrive pas à trouver une combinaison qui ait du sens. Existe-t-il une manière élégante de procéder? Sinon, y a-t-il tout moyen de le faire?

20
AJ.
SELECT date1 - date2
  FROM some_table

renvoie une différence en jours. Multipliez par 24 pour obtenir une différence d'heures et 24 * 60 pour obtenir des minutes. Donc

SELECT (date1 - date2) * 24 * 60 difference_in_minutes
  FROM some_table

devrait être ce que vous cherchez

47
Justin Cave

Par défaut, la soustraction de date Oracle renvoie un résultat en nombre de jours.

Il suffit donc de multiplier par 24 pour obtenir le nombre d'heures, puis à nouveau par 60 pendant le nombre de minutes.

Exemple:

select
  round((second_date - first_date) * (60 * 24),2) as time_in_minutes
from
  (
  select
    to_date('01/01/2008 01:30:00 PM','mm/dd/yyyy hh:mi:ss am') as first_date
   ,to_date('01/06/2008 01:35:00 PM','mm/dd/yyyy HH:MI:SS AM') as second_date
  from
    dual
  ) test_data
10
JosephStyons
3
Cade Roux