Dans Oracle, est-il une fonction qui calcule la différence entre deux Dates?
Dans Oracle, est-il une fonction qui calcule la différence entre deux Dates? Si non, est un moyen d'afficher la différence entre deux dates en heures et en minutes?
Requête:
SELECT Round(max((EndDate - StartDate ) * 24), 2) as MaximumScheduleTime,
Round(min((EndDate - StartDate) * 24), 2) as MinimumScheduleTime,
Round(avg((EndDate - StartDate) * 24), 2) as AveragegScheduleTime
FROM table1
- Avez-vous trouvez la réponse que vous cherchiez?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez soustraire deux dates dans Oracle. Le résultat est un FLOTTEUR qui représente le nombre de jours entre les deux dates. Vous pouvez faire un simple calcul arithmétique sur la partie fractionnaire de calculer les heures, les minutes et les secondes.
Voici un exemple:
Résultats dans: 1.5
Vous pouvez utiliser ces fonctions :
1) EXTRAIT(élément DE temporal_value)
2) NUMTOYMINTERVAL (n, unité)
3) NUMTODSINTERVAL (n, unité).
Par exemple :
http://asktom.oracle.com/tkyte/Misc/DateDiff.html
Également, à partir du lien ci-dessus:
Q: Dans Oracle, est-il une fonction qui calcule la différence entre deux Dates?
Juste soustraire une date de l'expression de l'autre pour obtenir la différence exprimée en nombre de jours. La partie entière est le nombre de jours entiers, la partie fractionnaire est la fraction de jour. Un Simple calcul arithmétique après cela, multiplier par 24 pour obtenir des heures.
Q: Si non, est un moyen d'afficher la différence entre deux dates, heures et minutes?
C'est juste une question d'exprimer la durée des heures entières et reste quelques minutes.
Nous pouvons aller "old school" pour obtenir les durées hhhh:format mi en utilisant une combinaison de simples fonctions internes:
Ouais, c'est moche, mais c'est assez rapide. Voici un cas plus simple, qui montre le mieux ce qui se passe:
(remplacer
date_expr1
etdate_expr2
avec la date expressions)commençons à déballer ce
date_expr1 - date_expr2
retourne différence en nombre de jours deround
(oufloor
) pour résoudre les fractions de minutes en entier minutesabs
fonction permettant d'obtenir une valeur absolue (changement des valeurs négatives à positives)to_char
modèle de formatFM00
donner deux chiffres (zéros)decode
fonction pour formater un signe négatif et un deux-points (si nécessaire)L'instruction SQL peut être moins laid à l'aide d'une fonction PL/SQL, celle qui prend le
deux argumentsune durée de (partielle) des jours et des retours formaté hhhh:mi(non testé)
Avec la fonction définie:
Vous pouvez utiliser le months_between de la fonction de convertir des dates de la différence des années et ensuite utiliser entre la virgule ans vous êtes intéressés:
Vous pouvez avoir besoin de changer le format de date pour correspondre à la une format de la date et de vérifier que 31 jours, des mois de travail pour vos scénarios.
Références:
( trouvé sur le www sur 05/15/2015 )
1. Oracle/PLSQL: MONTHS_BETWEEN Fonction
2. Oracle Centre d'Aide - MONTHS_BETWEEN