IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

[9i] Calculer des intervalles de temps


Sujet :

Oracle

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 169
    Points : 80
    Points
    80
    Par défaut [9i] Calculer des intervalles de temps
    Bonjour,

    quelle est la façon la plus simple pour calculer des temps?
    Je m'explique.

    J'ai une table qui va me servir à stocker des temps d'exécution que l'on appelera A.
    Voici le processus:
    Nous avons des taches qui s'éxécutent. Chaque tâche a une date de commencement (type date) et une date de fin(type date). Si on fait la soustraction entre la date de fin et celle de commencement, on obtient la durée de traitement de la tache.
    Une tache appartient à un groupe.

    Lorsqu'une tache se termine, un trigger qui est déclenché calcule la durée du traitement de la tache et stocke cette durée dans la table A.
    Lorsqu'une seconde tache se termine du même groupe que la précédente, rebelote on calcule la durée de traitement et cette fois ci on l'ajoute à la durée calculée précédemment dans la table A.

    Voila.

    Quel type de données choisir pour stocker la durée dans la table A? Date, timestamp.....

    Comment effectuer les calculs? Faut il tout convertir en secondes?
    Comment ajouter deux durées?

    Je suis vraiment perdu là.

    Merci pour votre aide.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    Tout dépend de la précision que tu souhaites.
    Si c'est de l'ordre de la seconde, moi je ferais un NUMBER pour stocker le temps d'exécution en secondes.
    Après pour afficher le temps tu fais du modulo 3600 pour les heures, 60 pour les minutes.
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    La facon la plus pratique est de stocker les donnees au format TIMESTAMPS et d'utiliser des fonctions INTERVAL qui fournissent des fonctions de calculs de temps et de durees natifs, "out of the box".

  4. #4
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par plabrevo
    La facon la plus pratique est de stocker les donnees au format TIMESTAMPS et d'utiliser des fonctions INTERVAL qui fournissent des fonctions de calculs de temps et de durees natifs, "out of the box".
    pas sûr que ce soit le plus pratique... il n'est pas possible de "sommer" des intervalles, ni de les "formater" avec un to_char.

  5. #5
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    La seule limitation que je n'ai jamais trouvee, c'est de devoir effectuer des comparaison de duree avec des constantes en dur, comme ci-dessous. Je pense que je n'ai pas assez cherche. Si quelqu'un a un tuyau pour cela (sans passer par du dynamique PL/SQL), je suis preneur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    IF l_duration > INTERVAL '60' SECOND THEN
    Sinon, en terme de fonctions de convertsions, les timestamp n'ont rien a envier aux autres fonctions plus classiques:
    http://download-west.oracle.com/docs...htm#sthref1042

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SQL> exec if timestamp '2000-01-01 00:00:06' - timestamp '2000-01-01 00:00:05' > INTERVAL '60' SECOND THEN null; end if
     
    PL/SQL procedure successfully completed.
    c'est quoi le prob?

  7. #7
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    La question est: comment remplacer '60' soit par une constante, soit par une variable?

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Citation Envoyé par plabrevo
    La question est: comment remplacer '60' soit par une constante, soit par une variable?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    numtodsinterval(n,'SECOND')

  9. #9
    Membre éclairé Avatar de plabrevo
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 547
    Points : 670
    Points
    670
    Par défaut
    Great.

    Merci.

  10. #10
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut Re: [9i] Calculer des intervalles de temps
    Citation Envoyé par tscoops
    Comment effectuer les calculs?
    Citation Envoyé par tscoops
    Faut il tout convertir en secondes?
    bof, pas nécessairement, la différence entre deux dates est en jour.

    Citation Envoyé par tscoops
    Comment ajouter deux durées?

Discussions similaires

  1. Gestion des intervales de temps
    Par jpvigniel dans le forum Cognos
    Réponses: 3
    Dernier message: 01/11/2011, 11h23
  2. deux calculs sur des echelles de temps differentes mais liees.
    Par antoinemignon dans le forum Simulink
    Réponses: 1
    Dernier message: 27/05/2010, 13h38
  3. [XL-2007] Calculer le nombre d'heure dans un intervalle de temps
    Par sofianeb dans le forum Excel
    Réponses: 2
    Dernier message: 13/04/2010, 16h06
  4. temps de calcul des stats lent
    Par Mehdilis dans le forum Oracle
    Réponses: 2
    Dernier message: 28/11/2009, 10h01
  5. Mesurer le temps de calcul des fonctions
    Par dzada dans le forum Caml
    Réponses: 2
    Dernier message: 12/03/2007, 19h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo