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

SQL Oracle Discussion :

Format d'intervalle de temps


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut Format d'intervalle de temps



    Je fais une requete SQL sous Oracle 10g, et j'ai un petit soucis :

    Je fais une difference entre 2 dates (Format Date) et je voudrais afficher ce resultat sous forme "DD HH24:MI:SS" (Nombre de jour, Heure, Minute et seconde)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Select 
    to_date(datefin||lPAD(heurefin,6,'0'),'YYYYMMDDHH24MISS') - to_date(datedebut||lPAD(heuredebut,6,'0'),'YYYYMMDDHH24MISS'))
    From Ma_table
    Avec la requete ci-dessus j'obtiens un decimal qui correspond a un nombre de jours. ex : 0,00953... et je voudrais plutot 00 00:13:43

    Est ce quelqu'un aurait une idée ?


  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    La différence est exprimée en nombre de jours. (comme tu l'as remarqué)

    La partie entière, ce sont les jours entiers.

    La partie décimale tu la multiplies par 24 et tu gardes la partie entière : ce sont les heures.

    Du résultat précédent, tu garde la partie décimale, tu multiplies par 60. Tu gardes la partie entière : ce sont les minutes.

    Du résultat juste au dessus, tu multiplies par 60 la partie décimale et tu gardes la partie entière pour avoir les secondes.

    Du résultat...

    Tu vois le truc ?

  3. #3
    Membre chevronné Avatar de delphine35
    Femme Profil pro
    Analyste BO
    Inscrit en
    Novembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Analyste BO

    Informations forums :
    Inscription : Novembre 2009
    Messages : 265
    Par défaut
    Merci pour ta réponse

    mais je voulais voir s'il n'y avait pas plus simple ... une fonction ....

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous pouvez sortir le résultat sous forme d'intervalle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    select numtodsinterval(dt_fin - dt_deb, 'DAY') as ds
      from
    (
    select to_date('2010-06-17 14:32:00', 'yyyy-mm-dd hh24:mi:ss') as dt_fin,
           to_date('2010-06-15 18:41:37', 'yyyy-mm-dd hh24:mi:ss') as dt_deb
      from dual
    );
     
    DS                                                
    --------------------
    +01 19:50:22.999999

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Y'a pas un bug de virgule flottante ?

  6. #6
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT NUMTODSINTERVAL(dt_fin - dt_deb, 'DAY')  as intervalle,
     TRUNC(dt_fin - dt_deb) AS nbj,
    	TO_CHAR(TRUNC(SYSDATE) + (dt_fin - dt_deb), 'HH24:MI:SS') AS nbh
    FROM
    (
    SELECT TO_DATE('2010-06-17 14:32:00', 'yyyy-mm-dd hh24:mi:ss') AS dt_fin,
           TO_DATE('2010-06-15 18:41:37', 'yyyy-mm-dd hh24:mi:ss') AS dt_deb
      FROM dual
    );
     
    INTERVALLE		NBJ	NBH
    +01 19:50:22.999999	1	19:50:23
    Ma solution ne marche pas pour une différence négative

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Intervalle de temps formaté ssyymmdd
    Par adrien1 dans le forum VB.NET
    Réponses: 1
    Dernier message: 02/08/2012, 12h12
  2. [debutant] Récupérer un intervalle de temps
    Par xlurp dans le forum Collection et Stream
    Réponses: 5
    Dernier message: 28/10/2004, 15h48
  3. [Interbase 6]Stocker l'intervalle de temps
    Par Andry dans le forum InterBase
    Réponses: 4
    Dernier message: 11/08/2004, 07h48
  4. [Timer]Comment mesurer un intervalle de temps ?
    Par Pill_S dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/05/2004, 17h39

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