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 et SQL. Discussion :

Requête sur champs de type date


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Requête sur champs de type date
    Bonjour à tous,
    J’ai un petit problème de requête.
    Pour gérer mon jardin, j’ai créé, sous Access 2021, une petite base de données avec une table « Plants » qui regroupe le « Nom », la « Variété », les « semis du » et les « Semis au », ces 2 derniers au format Date n’affichant que le jour et le mois.
    Dans une requête, je souhaite sélectionner les semis du mois en cours.
    Ça fonctionne ainsi :
    Champ : Semis du
    Table : Plants
    Critères : >=Mois(Date())
    et
    Champ : Semis au
    Table : Plants
    Critères : <=Mois(Date())

    La sélection se fait mais avec une erreur.
    Si « Semis du » contient une date antérieure au mois courant et « Semis au » une date postérieure au mois courant, l’enregistrement n’est pas sélectionné.

    Novice dans Access, je n’ai pas trouvé la solution. Quelqu’un a-t-il une idée ?
    Merci d’avance de votre aide.
    Bien cordialement
    Pierre

  2. #2
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 835
    Points : 14 935
    Points
    14 935
    Par défaut
    bonjour,
    ces 2 derniers au format Date n’affichant que le jour et le mois.
    ce n'est pas parce qu'une date affiche le jour et le mois que l'année n'est pas présente. Il faut savoir que le type de donnée date est un réel double: la partie entière représentant la date (jour, mois, année), les décimales, l'heure (heure, minute, seconde,...).
    Cela dit, ici ce n'est pas exactement le problème, encore que comparer une date entière au mois de la date du jour ne peut pas donner le résultat escompté.

    Il faut comparer ce qui est comparable, c'est à dire le mois et seulement le mois mais des 2 cotés de la comparaison:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Champ : Mois([Semis du])
    Critères : >=Mois(Date())
     
    Champ : Mois([Semis au])
    Critères : <=Mois(Date())

  3. #3
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 835
    Points : 14 935
    Points
    14 935
    Par défaut
    plus simple, on peut tester si le mois de l'une ou l'autre des 2 dates correspond au mois en cours (en clair: au moins une comparaison est vraie):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Champ : Mois([Semis du]) = Mois(Date()) Ou Mois([Semis au]) = Mois(Date())
    Critères : Vrai
    ou aussi (attention: dans ce cas, les critères sont à mettre sur 2 lignes différentes):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Champ : Mois([Semis du]) = Mois(Date())
    Critères (ligne 1): Vrai
     
    Champ :  Mois([Semis au]) = Mois(Date())
    Critères (ligne 2): Vrai

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2011
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2011
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous
    Bonjour à tee_grandbois et merci de m'avoir répondu.

    J'ai testé cette solution
    Champ : Mois([Semis du]) = Mois(Date()) Ou Mois([Semis au]) = Mois(Date())
    Critères : Vrai
    qui fonctionne parfaitement.
    Un grand merci pour votre aide.
    Je mets en résolu.
    Bien cordialement
    Pierre

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

Discussions similaires

  1. Probleme de requete avec MAX sur champ de type date
    Par boutmos dans le forum Requêtes
    Réponses: 6
    Dernier message: 11/04/2013, 10h02
  2. extraire Année sur champs de type Date
    Par airbeone dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 24/01/2008, 10h23
  3. Réponses: 7
    Dernier message: 23/03/2007, 14h46
  4. requete sql avec between sur des champs de type Date
    Par ersoufiane dans le forum Langage SQL
    Réponses: 2
    Dernier message: 02/08/2006, 19h43
  5. Critères sur champ de type date
    Par blasco dans le forum Access
    Réponses: 2
    Dernier message: 29/10/2004, 09h48

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