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 :

Calculer un intervalle entre 2 dates


Sujet :

SQL Oracle

  1. #1
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 366
    Points : 86
    Points
    86
    Par défaut Calculer un intervalle entre 2 dates
    Bonjour,

    Je fais de nouveau appel à de bonne âmes pour me dépêtrer d'une requête que je pensais facile à savoir, déterminer le nombre d'année entre les dates contenues dans une colonne et la date de l'ordinateur.

    J'avais noté une fois quelque chose dans ce genre qui semblait avoir fonctionné :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select to_char(sysdate, 'yyyy') - table.annee_naiss, 
    table.colonne_1
    from table, dual;

    Mais après avoir essayé plusieurs fois dans la requête suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select table1.données1,
    table2.données1,  
    table2.données2,
    table2.date_naiss
    from table1 left join table2 on table1.données1 = table2.données1
    where...
    Rien ne fonctionne.

    Si quelqu'un pouvait m'orienter...merci.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 285
    Points : 12 987
    Points
    12 987
    Par défaut
    Bonjour,
    Tu tentes de soustraire table.annee_naiss (quel type ?) à une chaine… Ca ne peut pas fonctionner.
    Tu as la fonction year() qui extrait la date d'une chaine.
    De plus, je ne vois pas trop pourquoi tu utilises la pseudo-table DUAL.
    Normalement ceci devrais fonctionner:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select year(sysdate) - table.annee_naiss, 
    table.colonne_1
    from table

    Tatayo.

  3. #3
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 366
    Points : 86
    Points
    86
    Par défaut
    La colonne table.annee_naiss est au format date (dd/mm/yyyy).

    J'ai essayé ton exemple mais j'obtiens le message d'erreur suivant :

    ORA-00904: "YEAR" : identificateur non valide

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 285
    Points : 12 987
    Points
    12 987
    Par défaut
    Effectivement, Oracle ne connait pas la fonction YEAR().
    Après une petite recherche:
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT EXTRACT(year FROM sysdate)
    from...

    Tatayo.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 366
    Points : 86
    Points
    86
    Par défaut
    Je viens de faire une essai et cela m'affiche bien "2019".

    Par contre, je n'arrive pas à intégrer cette fonction dans une soustraction avec ma colonne table.annee_naiss (au format date "dd/mm/yyyy").

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 285
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 285
    Points : 12 987
    Points
    12 987
    Par défaut
    Puisque la colonne est au format date, il faut également extraire l'année, comme pour la date actuelle !

    Tatayo.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 366
    Points : 86
    Points
    86
    Par défaut
    Ça fonctionne.

    Merci beaucoup !

  8. #8
    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
    Vu que je vois un date_naiss, attention au calcul en fonction des années des dates

    date_naiss = 31/12/2018
    Sysdate = 01/01/2019
    Calcul => 1 an (c'est peut être voulu)

    Si c'est un calcul d'anniversaire, on peut se baser sur le nb de mois entre 2 dates

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('05/06/2015', 'DD.MM.RRRR'))  / 12 ) nb_annee
    FROM DUAL

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/05/2012, 11h05
  2. [AC-2007] Calcul Intervalle entre 2 dates
    Par arb35 dans le forum VBA Access
    Réponses: 6
    Dernier message: 21/02/2010, 13h13
  3. [VBA] Calculer la différence entre deux dates
    Par T'chab dans le forum Access
    Réponses: 13
    Dernier message: 11/05/2006, 16h12
  4. [Date] Fonction de calcul de durée entre 2 dates
    Par jesus144 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 10/01/2006, 17h36
  5. Calculer une duree entre 2 dates
    Par d.w.d dans le forum C++
    Réponses: 7
    Dernier message: 02/03/2005, 23h39

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