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 :

Problème de format sur différence de dates


Sujet :

SQL Oracle

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut Problème de format sur différence de dates
    Bonjour la team,

    j'effectue une différence entre 2 dates oracle avec la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select fin - debut
    from (
    select date_creation fin,  lead(date_creation, 1) over(order by date_creation desc) debut
    from journal
    )
    where  [conditions] ;
    J'obtiens des résultats sous la forme : "jj hh:mm:ss" (format : jours heures:minutes:secondes)
    Exemple :
    0 1:17:31
    0 1:17:56

    Voici les 2 questions que je me pose :
    - quelle est le type de données retourné par la différence entre ces 2 dates ?
    - comment obtenir une différence au format hh:mi:ss (heures : minutes : secondes) ?

    j'ai lu plusieurs post mais je n'ai pas trouvé la résolution de ce genre de problème.

    Merci pour votre aide,
    berni.

  2. #2
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    1) Day to second interval (les colonnes sont au format timestamp)
    2) En utilisant Extract

  3. #3
    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
    Une différence entre 2 dates renvoie un nombre de jours (avec les décimales).
    A l'inverse on rajoute des heures à un jour avec des 24ème

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT TRUNC(SYSDATE), TRUNC(SYSDATE) + 8 /24, TRUNC(SYSDATE) + 8.5 /24, TRUNC(SYSDATE) + 8/24 + 30/24/60 + 45/24/60/60
    FROM dual
     
    TRUNC(SYSDATE)	TRUNC(SYSDATE)+8/24	TRUNC(SYSDATE)+8.5/24	TRUNC(SYSDATE)+8/24+30/24/60+45/24/60/60
    23/04/2015	23/04/2015 08:00:00	23/04/2015 08:30:00	23/04/2015 08:30:45
    Pour ton problème on peut aussi le gérer comme ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT SYSDATE, startup_time, SYSDATE - startup_time diff, TRUNC(SYSDATE - startup_time) nbj, TO_CHAR(TRUNC(SYSDATE) + (SYSDATE - startup_time), 'HH24:MI:SS') heures
    FROM v$instance
     
    SYSDATE			STARTUP_TIME		DIFF						NBJ	HEURES
    23/04/2015 09:31:29	24/07/2014 09:43:30	272.991655092592592592592592592592592593	272	23:47:59
    More Code : More Bugs. Less Code : Less Bugs
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    mnitu était sur la bonne piste
    Il n'est pas possible d'effectuer des opérations d'aggrégation (AVG) avec le type INTERVAL_TO_SECOND.

    Pour se faire il faut utiliser la fonction EXTRACT pour convertir le tout en second et formater le résultat final pour l'afficher dans mon cas au format hh:mi:ss.

    Ce qui donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    select numtodsinterval(avg(EXTRACT(HOUR FROM (fin - debut))*24*60*60 +  EXTRACT(MINUTE FROM (fin - debut))*60*60 +  EXTRACT(SECOND FROM (fin - debut))*60),'SECOND')  duree
    from (
    select date_creation fin,  lead(date_creation, 1) over(order by date_creation desc) debut
    from journal
    )
    where  [conditions] ;
    Merci pour votre aide

    A+
    berni.

  5. #5
    Expert éminent sénior Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Points : 11 252
    Points
    11 252
    Par défaut
    Citation Envoyé par bernidupont Voir le message
    mnitu était sur la bonne piste
    ....
    Ah qu'est ce que j'avais peur de me tromper

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

Discussions similaires

  1. Problème de formats sur formulaire
    Par Bluuuh dans le forum IHM
    Réponses: 2
    Dernier message: 24/06/2010, 13h45
  2. Problème de format sur colonne
    Par NemoParis dans le forum Conception
    Réponses: 2
    Dernier message: 31/05/2010, 13h30
  3. [MySQL] Problème de trie sur une colonne date
    Par vince851 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 28/04/2010, 11h02
  4. [XL-2003] erreur de format sur la formule : = "date du jour"&aujourdhui()
    Par gandalf20000000 dans le forum Excel
    Réponses: 2
    Dernier message: 15/01/2010, 14h40
  5. [CR] Problème de sélection sur un champ date
    Par noluc dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 21/11/2003, 16h56

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