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

Langage SQL Discussion :

Tri par âge en fonction de deux dates


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut Tri par âge en fonction de deux dates
    Bonjour,

    J'ai un problème dans une requête, j'ai un tableau de statistiques avec des plages d'âges :

    0-9 ans
    10-19 ans
    20-29ans
    etc

    Lors de l'execution de ma requête, j'ai cette ligne ou je défini mes dates de début et de fin de recherche :

    AND datum > :du AND datum < :au

    SI je résonne bien je devrais calculer la date de départ de recherche (:du) moins la date de naissance du client.

    Seulement ne connaissant pas la gestion des dates en SQL, je ne sait pas trop comment m'y prendre, j'ai fait pas mal d'essaie mais rien ne semble fonctionné...

    Une idée?

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Tout dépend de votre SGBDR. S'il est parfaitement normatif alors l'age se calcul d'après la date de naissance DN de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CURRENT_DATE - DN :: INTERVAL YEAR
    A +

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    bonjour,

    Merci de votre aide.

    En fait je devrais donc si j'ai bien compris mettre sous cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AND :du - Datedenaissance ::INTERVAL YEAR ?
    merci

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Oui, si votre SGBDR respecte à la lettre a norme SQL.

    A +

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Apparemment pas à la lettre, car il ne reconnait pas les ::

    Sinon il n'est pas possible de déclarer une variable temporaire avec dedans le nombre d'année de différence puis mettre cette variable dans une condition du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    WHERE :du - c.FreiesDatum1 x
    AND x >= 9
    Je pense que je suis bien à coté, mais je n'ai pas trop d'idée et de connaissances sur la gestion des dates

    Merci

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Et vous ne voullez vraiment pas nous dire quel SGBD vous utilisez ?

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Le programme utilise BDE-Verwaltung 5.0
    En fait je créé des requêtes dans un système intégré au programme. Puis j'exécute des macros qui lance les requête SQL.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2007
    Messages : 42
    Points : 23
    Points
    23
    Par défaut
    Si j'utilise cette condition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    WHERE datum > :du AND datum < :au
    AND :du - k.FreiesDatum1 <=9

    Les dates entrée sont 01.01.2008 et de fin 31.12.2008

    il ne me retourne pas d'erreur, par contre il me retourne uniquement les personnes née en 2008.

    Je pense qu'il me manque un élément pour dire que je veux soustraire l'année de début (:du) par rapport à l'année de naissance (k.FreiesDatum1) du client.

Discussions similaires

  1. calcul ratio en fonction de deux dates
    Par mano_bi dans le forum QlikView
    Réponses: 22
    Dernier message: 02/05/2014, 17h48
  2. Réponses: 11
    Dernier message: 08/10/2010, 12h00
  3. [Requête] Tri d'éléments en fonction de deux heures différentes
    Par Grandchon dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 02/05/2007, 19h45
  4. fonction de tri par introspection
    Par ned-flanders dans le forum C++
    Réponses: 7
    Dernier message: 21/10/2004, 12h49
  5. [ XML ][ XSL ] tri par date
    Par zozolh2 dans le forum XMLRAD
    Réponses: 6
    Dernier message: 26/08/2004, 11h19

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