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

Requêtes MySQL Discussion :

valeur absurde datediff


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut valeur absurde datediff
    Salut,

    J'ai un petit problème que je n'arrive pas à comprendre. J'ai une table toute simple contenant 2 colonnes DatNAI et DatPres dont le type est DATE.
    Lorsque je fais un DATEDIFF sur ces 2 colonnes j'ai des valeurs totalement absurdes.

    DatNAI | DatPres
    1923-07-17 | 1994-07-26
    1955-03-24 | 2001-03-15
    ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT DATEDIFF(DtPres,DtNai) FROM export
    En sortie, j'ai :
    25942
    16793
    ...

    Je ne comprends pas du tout ces valeurs. Où est mon erreur ?

    Merci.

  2. #2
    Membre Expert Avatar de Yanika_bzh
    Homme Profil pro
    Responsable Applicatif et R&D
    Inscrit en
    Février 2006
    Messages
    1 144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Responsable Applicatif et R&D
    Secteur : Finance

    Informations forums :
    Inscription : Février 2006
    Messages : 1 144
    Par défaut
    Le résultat est le nombre de jours de différence

    25942 équivaut à peu près à 71 ans, or 1994-1923 c'est à peu près de cet acabit

    16793 équivaut à peu près à 46 ans, ce qui est compatible avec vos dates1955 - 2001

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    DATEDIFF retourne le nombre de jours entre deux dates.
    Un rapide calcul : 1994 - 1923 = 71 ans x 365 jours = 25 915 jours. Les jours de chaque année + les années bissextiles et on doit arriver à 25 942 jours non ?

    Que cherches-tu à calculer ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    salut,
    Merci pour vos réponses.

    Je n'avais pas fais le rapprochement que c'était le nombre de jours en sortie. En fait, je voulais calculer l'âge de la personne en faisant un DATEDIFF pour qu'il me retourne une valeur en années, pas en jours.

    D'ailleurs, peut-on avoir le résultat en années ? j'ai essayé de rajouter le paramètre YEAR à la fin ça sort en erreur

  5. #5
    Membre confirmé
    Inscrit en
    Janvier 2006
    Messages
    137
    Détails du profil
    Informations forums :
    Inscription : Janvier 2006
    Messages : 137
    Par défaut
    j'ai finalement trouvé comment faire, je poste le code sql :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT EXTRACT(YEAR FROM (FROM_DAYS(DATEDIFF(DtPres,DtNai))))+0 AS age from export;

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Voici la formule de SQLPro pour calculer un âge en SQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT CAST(CURRENT_TIMESTAMP - DATE_NAISSANCE AS FLOAT) / 365.2425 AS AGE_AN_DECIMAL
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  7. #7
    Membre Expert

    Profil pro
    Inscrit en
    Mars 2005
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 683
    Par défaut
    Cette formule ne devrait pas être juste car elle utilise un nombre de jour moyen par an.

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

Discussions similaires

  1. valeur retourné par datediff
    Par pafi76 dans le forum Access
    Réponses: 2
    Dernier message: 29/08/2006, 14h42
  2. récupérer la valeur du 2ème champ dans un DBLookUpListBox
    Par jakouz dans le forum Bases de données
    Réponses: 3
    Dernier message: 20/07/2004, 16h45
  3. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28
  4. [XSLT]position d'un element de valeur specifique
    Par squat dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 25/07/2002, 16h42
  5. Réponses: 2
    Dernier message: 22/07/2002, 18h02

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