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

InterBase Discussion :

Determiner l'age d'une personne à un instant donné


Sujet :

InterBase

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut Determiner l'age d'une personne à un instant donné
    Soit La table:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Personne(Id, Nom, Prenom, date_naissance)
    Je désire créer une requête qui à un instant donné, me donne l'âge (en nombre de jours)de toutes les personnes de la table et en voulant faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Id, Nom, Prenom, (:Instant - date_naissance) as nbre_Jour FROM Personne
    Mais j'ai un méssage d'erreur du genre:
    Dynamic SQL Error.
    Expression evaluation not supported.
    Erreur due à : :Instant - date_naissance, comme s'il était impossible de faire une opération avec un paramêtre!!!

    Comment venir à bout de ça???

    Cordialement.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Hélas, les fonctions de dates changent selon le SGBD.
    Dites-nous quel est le vôtre.

    Si j'en crois l'article de SQLPro sur le temps, sa mesure, ses calculs, en SQL standard, il doit être possible de faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT Id, Nom, Prenom, CURRENT_DATE - DATE date_naissance AS Nbre_Jours
    FROM Personne
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Dans mon cas, ce n'est pas la date actuelle que je détermine la différence mais une date, un instant t que l'utilisateur saisit d'ou le paramêtre !!!!

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Ce ne répond pas à la question sous-entendue de Cinephil, quel est votre SGBD ?

    Je vous rappelle qu'avant de poster, on essaie de lire un minimum les règles du forum.

  5. #5
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par SOPSOU Voir le message
    Salut,
    Dans mon cas, ce n'est pas la date actuelle que je détermine la différence mais une date, un instant t que l'utilisateur saisit d'ou le paramêtre !!!!
    L'utilisateur saisit la date voulue dans une interface programmée qui génère une requête SQL interprétable par le serveur.

    Il suffit de remplacer CURRENT_DATE par DATE votre_variable. Exemple avec une variable PHP contenant la requête à lancer sur le serveur :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $date_choisie = '2009-07-24';
    $query = "SELECT Id, Nom, Prenom, DATE '$date_choisie' - DATE date_naissance AS Nbre_Jours
    FROM Personne";
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    D'abord, je l'ai oublié, je pensais l'avoir mis sinon même sans lire les règles du forum, le fait qu'il me l'ait demandé, par politesse je lui dois ça. Donc pas le peine de ...
    J'utilise Interbase 6.5 et pour mes tests de requête, j'utilise EMS SQL Query 2005 for Interbase/Firebird
    NB: En interbase, on utilise les deux points( avec le nom du paramêtre pour que ça soit considérer comme un paramètre.
    J'ai essayé le '$' au lieu de ':' mais je reçois une erreur

    Cordialement à tous.

  7. #7
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Le pourcentage de non-précision du SGBD au premier post est très important, alors après un rappel ça peut devenir agaçant.
    Bon, vous avez oubliez, j'ai répondu trop sêchement, n'en parlons plus et revenons à votre problème.

    Est-ce qu'Interbase interprète le paramètre comme une chaîne de caractère et qu'il faut procéder à une conversion ?

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2006
    Messages
    249
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 249
    Points : 111
    Points
    111
    Par défaut
    Salut,
    Mes excuses Waldar !!!
    Avec le SGBD, on n'a pas besoin de faire une conversion c'est directement interprété comme paramètre pourvu qu'il y'ait les deux points avant le nom du paramètre.
    En fait, si je fais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT Nom, Prenom, date_naissance FROM Personne WHERE date_naissance >= :Param
    .
    J'ai pas d'erreur mais envoyé le paramètre à gauche du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     (:Param - date_naissance) AS Difference
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (date_naissance - :Param) AS Difference

    Là, ça bugg ???? Et c'est ce que je comprends pas et comment le résoudre.

  9. #9
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 820
    Points
    17 820
    Par défaut
    Essayez quand même en forçant la conversion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Id, Nom, Prenom,
           cast(:Instant as date) - date_naissance AS nbre_Jour
      FROM Personne
    Je ne suis pas sûr du type date dans Interbase, donc il faudra peut-être l'adapter.

Discussions similaires

  1. [WD14] Calcul de l'age d'une personne automatiquement
    Par Gzorglub dans le forum WinDev
    Réponses: 13
    Dernier message: 13/01/2010, 11h59
  2. Calcul age d'une personne
    Par amirad dans le forum VB.NET
    Réponses: 6
    Dernier message: 29/07/2009, 11h55
  3. calculer l'age d'une personne
    Par Daniela dans le forum Débuter
    Réponses: 4
    Dernier message: 13/07/2009, 14h26
  4. Calcul de l'age d'une personne
    Par batstoon dans le forum Oracle
    Réponses: 2
    Dernier message: 04/12/2006, 13h50
  5. Calculer l'age d'une personne
    Par Oberown dans le forum SQL Procédural
    Réponses: 6
    Dernier message: 27/09/2005, 14h19

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