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 :

select en fonction de l'année d'une date


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut select en fonction de l'année d'une date
    Bonjour,
    j'ai une table patient qui a entre autre un attribut date ne naissance (dateN) et une autre table dossier qui a aussi un attribut date du dossier (dateD).
    (base de données access, interface php, connexion à la base via odbc)

    Un visiteur peut rentrer un âge que je récupère dans $age.

    Je voudrais alors de faire une requête qui retourne tous les patient qui ont l'âge $age à la création du dossier mais je n'y arrive pas :

    -je récupère la dateD dans $d puis je fait
    list ($a, $m, $j) = explode ('-', $d);
    -je calcul ensuite l'année de naissance des patient pour avoir $age
    $annéeNais=$a-$age;

    mais je n'ai aucune idée de comment faire pour la requête comparant l'année de naissance du patient et l'année des date de naissance.

    Merci de votre aide

  2. #2
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM dossier WHERE dateD LIKE '$a-%'
    il va te lister toutes les dossier dont la date commence par l'année XXXX dans ta variable $a

  3. #3
    Membre actif
    Avatar de MashiMaro
    Profil pro
    Inscrit en
    Février 2003
    Messages
    180
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 180
    Points : 213
    Points
    213
    Par défaut
    Selon les SGBD, tu as une fonction YEAR(MyDate) qui te retourne l'année de la date.

  4. #4
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 118
    Points : 28 510
    Points
    28 510
    Par défaut
    Citation Envoyé par MashiMaro
    Selon les SGBD, tu as une fonction YEAR(MyDate) qui te retourne l'année de la date.
    Le standard SQL c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    extract(year from ColonneDate)

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    merci, je crois que c'est la solution.
    J'ai essayer mais ça me retourne NO ROW FOUND, pourtant j'ai verifier qu'il y a bien des tuples qui correspondent dans la base. Mais je crois que c'est un autre pb.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    122
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2006
    Messages : 122
    Points : 65
    Points
    65
    Par défaut
    Je parlais de cette solution : SELECT * FROM dossier WHERE dateD LIKE '$a-%'
    Je n'avais pas encore reçu les autres postes.

    Puis j'ai essayer avec ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $req3="SELECT * FROM patient WHERE extract(year FROM dateN)=$dateN";
    	$res3=odbc_exec($connexion, $req3);
    	odbc_result_all($res3);
    $dateN est l'année de naissance que devrait avoir le patient pour avoir l'âge rentré par le visiteur

    j'ai l'erreur :
    Warning: odbc_exec() [function.odbc-exec]: SQL error: [Microsoft][Pilote ODBC Microsoft Access] Erreur de syntaxe (opérateur absent) dans l'expression 'extract(year FROM dateN)=-75'., SQL state 37000 in SQLExecDirect in C:\Serveur\Interface\InterfacePROLOG\resuReq.php5 on line 54

  7. #7
    Membre habitué Avatar de kivan666
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 242
    Points : 177
    Points
    177
    Par défaut
    pourquoi faire compliqué quand on peut faire simple ?
    ma solution marche très bien, non ?

Discussions similaires

  1. [débutant] récuperer l'année d'une date.
    Par goony dans le forum Langage SQL
    Réponses: 4
    Dernier message: 26/08/2005, 13h37
  2. [Debutant] récupérer l'année d'une date
    Par petitelulu dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 27/10/2004, 16h28
  3. Récupérer le mois et l'année d'une date
    Par missllyss dans le forum SQL
    Réponses: 2
    Dernier message: 23/09/2003, 10h17
  4. requête sur l'année d'une date
    Par jo77 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 30/07/2003, 10h28
  5. Récupérer l'année d'une date
    Par delphim dans le forum Langage SQL
    Réponses: 3
    Dernier message: 15/01/2003, 17h33

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