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 :

Différence entre deux dates (jour et heure) [11g]


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 45
    Points : 34
    Points
    34
    Par défaut Différence entre deux dates (jour et heure)
    bonjour !
    j'utilise oracle 11g express
    j'ai bien cherché, je n'ai pas trouvé exactement ce que je cherche
    alors SVP aidez moi!
    j'ai une table nommée Escale (code_escale , date_accostage de type date, date_finop de type date aussi )
    j'ai inséré une ligne ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    insert into escale
    (CODE_ESCALE,DATE_ACCOSTAGE,DETE_FINOP)
    values
    (11,TO_DATE('2003/05/03 20', 'yyyy/mm/dd hh24'),TO_DATE('2003/05/03 22', 'yyyy/mm/dd hh24'));
    elle a été insérée avec succès !
    le problème est que je voudrais avoir la différence entre date_accostage et date_finop (jours et heurs)
    j'ai fait ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT trunc(TO_DATE(DATE_ACCOSTAGE, 'YYYY-MM-DD hh24')) - trunc(TO_DATE(DETE_FINOP, 'YYYY-MM-DD hh24')) FROM escale
    la requête m'envoie 0 (zéro) au lieu de 2(deux) car la première date xxxxx 20h et la deuxième xxxxx 22h
    j'ai inversé et tout mais le problème persiste (elle devrait renvoyer soit 2 ou -2) mais elle envoie 0
    svp aidez moi
    je vous remercie d'avance

  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
    Plusieurs pistes:
    • Quelle est le résultat de l'application de la fonction trunc[ate] pour une date ?
    • A quoi ça sert de transformer une date dans une date ?
    • La différence de deux dates est exprimé en quoi ?

    N'hésitez pas à consulter la documentation SQL.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par mnitu Voir le message
    Plusieurs pistes:
    • Quelle est le résultat de l'application de la fonction trunc[ate] pour une date ?
    • A quoi ça sert de transformer une date dans une date ?
    • La différence de deux dates est exprimé en quoi ?

    N'hésitez pas à consulter la documentation SQL.
    bonjour
    je suis très limité en connaissance, dans ce domaine!!
    je voudrais savoir comment faire pour obtenir, la différence entre deux dates!!
    1- je vous ai donné le résultat de la fonction trunc, mais je ne sais pas ce que ate veux dire!!
    2- je ne veux pas transformer la date!! mais si vous parlez du (yyyy/mm/dd hh24) je l'ai trouvé dans un forum, j'ai enlevé ça!! la requête ne s’exécute pas!!
    3- la différence exprimée en jours et heurs!!
    voila, j’espère que j'ai été en peut plus clair!! en tout cas excusez mon ignorance
    aidez moi à résoudre cela s'il vous plait j'ai vraiment cherché avant de poster ce sujet!

  4. #4
    Membre régulier
    Homme Profil pro
    Manager BI/Consultant sénior SAP BI - MS BI
    Inscrit en
    Avril 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Manager BI/Consultant sénior SAP BI - MS BI
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2009
    Messages : 32
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    Tu peux toujours essayer ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select 24 * (to_date('2003/05/03 20', 'yyyy/mm/dd hh24')
                 - to_date('2003/05/03 22', 'yyyy/mm/dd hh24')) diff_hours 
           from dual
    Cela te ramène -2

    La fonction TRUNC() appliquée à une date permet la suppression de la partie horaire, c'est pour cela que tu obtiens 0 dans ta différence.

    En espérant t'avoir apporté une réponse.

    Bonne journée.
    Jacky BARBIER
    Consultant BI chez VISEO

    * MCITP, MCTS Business Intelligence SQL Server 2008

    Viadeo | LinkedIn | Google+

  5. #5
    Membre averti
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mai 2012
    Messages
    127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2012
    Messages : 127
    Points : 339
    Points
    339
    Par défaut
    Bonjour,

    Comme le signale viggovatelli, la différence entre une date et une autre renvoie le nombre de jours de différence entre ces deux dates, et on peut se débrouiller avec des opérations toutes simples pour le convertir en ce que l'on veut.

    Toutefois, pour obtenir la différence en jours et en heures comme vous le demandez, il existe aussi une fonction NUMTODSINTERVAL qui permet de convertir ce nombre en INTERVAL DAY TO SECOND.

    Si je reprends l'exemple fourni, ça donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT numtodsinterval (to_date('2003/05/03 20', 'yyyy/mm/dd hh24') - to_date('2003/05/03 22', 'yyyy/mm/dd hh24'), 'DAY') diff
    FROM dual;
    Ce qui renvoie :" 0 -2:0:0.0" 0 jour, -2 heures, 0 minute et 0,0 seconde de différence, le compte est bon.

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par viggovatelli Voir le message
    Bonjour,

    Tu peux toujours essayer ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     select 24 * (to_date('2003/05/03 20', 'yyyy/mm/dd hh24')
                 - to_date('2003/05/03 22', 'yyyy/mm/dd hh24')) diff_hours 
           from dual
    Cela te ramène -2

    La fonction TRUNC() appliquée à une date permet la suppression de la partie horaire, c'est pour cela que tu obtiens 0 dans ta différence.

    En espérant t'avoir apporté une réponse.

    Bonne journée.
    bonjour
    j'ai utiliser votre requête directement, elle marche comme vous l'aviez dit !!!
    mais quand je la modifie pour répondre a mon besoin, c'est a dire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT 24 * (to_date(DATE_FINOP, 'yyyy/mm/dd hh24')
                 - to_date(DATE_ACCOSTAGE, 'yyyy/mm/dd hh24')) diff_hours 
           FROM escale
    cela renvoie encore 0 le problème n'est pas résolu
    je veux la différence entre deux date (variable, c'est à dire ce qui se trouve dans le champ DATE_FINOP, et DATE_ACCOSTAGE)
    Aidez moi s'il vous plait

  7. #7
    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
    A quoi ça sert de transformer une date dans une date ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Connected to Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 
    Connected as mni
     
    SQL> 
    SQL> Select sysdate, to_date(sysdate,'yyyy/mm/dd hh24')
      2    from dual
      3  /
     
    SYSDATE     TO_DATE(SYSDATE,'YYYY/MM/DDHH2
    ----------- ------------------------------
    10/10/2013  13/10/0010
     
    SQL>

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

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

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut,

    J'explicite un peu ce que te dit Mnitu : on ne fait pas to_date sur une date.
    To_date te transforme une chaîne de caractères en date, date étant un type de donnée bien précis.
    Quand tu fais un to_date sur une date, voilà ce qui se passe : Oracle te change DATE_FINOP en chaîne de caractère en un format que tu ne contrôles pas, puis le rechange en date, au format que tu précises... mais qui ne correspond pas forcément à ce qu'Oracle t'a fait en implicite !

    Tente donc simplement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT 24 * (DATE_FINOP
                 - DATE_ACCOSTAGE) diff_hours 
           FROM escale

    (c'est ma photo)
    Paku, Paku !
    Pour les jeunes incultes : non, je ne suis pas un pokémon...

    Le pacblog : http://pacmann.over-blog.com/

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Inscrit en
    Mars 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Mars 2013
    Messages : 45
    Points : 34
    Points
    34
    Par défaut
    MERCI BEAUCOUP Pacman vous avez vraiment donné une réponse claire pour moi!!!
    le problème est résolu, merci encore

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

Discussions similaires

  1. Différence entre deux dates en heures
    Par Invité dans le forum Excel
    Réponses: 5
    Dernier message: 26/07/2011, 15h24
  2. différence entre deux dates en jour
    Par djouk dans le forum Requêtes
    Réponses: 1
    Dernier message: 07/01/2011, 09h11
  3. [AC-2010] Calculer la différence entre deux dates, en jour, dans une requête
    Par Just-Soft dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 31/10/2010, 02h19
  4. [AC-2007] Requête SQL différence entre deux date en heure
    Par sarah12 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 21/07/2010, 20h58
  5. Réponses: 2
    Dernier message: 21/07/2006, 14h04

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