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 :

Afficher uniquement quand la date est supérieure à 2010


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 6
    Points
    6
    Par défaut Afficher uniquement quand la date est supérieure à 2010
    Bonjour, j'ai une requete qui me renvoie plusieurs lignes, mais j'aimerais que cette requete me renvoie seulement les lignes donc le champ date est supérieure à 2010. Le problème c'est que dans ma base le champ date est de la forme (mm/YYYY) en gros : 01/2010.
    J'aimerais donc afficher seulement les date dont l'année est supérieure à 2010.
    Lorsque je fais un select * from matable where date >= 01/2010 j'ai tout qui s'affiche car il s'arrete à 01 je pense ...
    J'ai essayé un where date >= LIKE "%2010" mais ça marche pas ...
    Merci pour votre aide.

  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
    Il vaudrait mieux avoir une vraie colonne (et pas champ ! ) de type DATE ou bien une colonne pour le mois et une autre pour l'année.

    En l'état actuel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT -- les colonnes nécessaires
    FROM matable
    WHERE CAST(RIGHT(la_colonne, 4) AS UNSIGNED) > 2010
    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
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    ah génial merci beaucoup ça marche !
    Et je voulais dire colonne et non champ en effet ce serait plus clair comme tu dis.
    J'avais encore jamais vu ce CAST, je suppose qu'on met right, left suivant ce que l'on veut, puis UNSIGNED ça sert à quoi ?

  4. #4
    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
    CAST permet de transformer le type de donnée issue d'une colonne ou une autre donnée exprimée en clair.

    Ici je transforme les 4 caractères situés à droite de la colonne de date en UNSIGNED, c'est à dire en entier non signé, de façon à pouvoir comparer ce nombre à 2010 sans ambiguïté.

    CAST est du SQL standard mais UNSIGNED est un type spécifique à MySQL. Avec un autre SGBD, il vaudrait mieux utiliser INTEGER.

    Vérifie quand même que toutes tes dates sont bien au format mm/aaaa et qu'il n'y en ait pas avec une année sur deux chiffres.
    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 !

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Merci pour tes informations.

    Le problème c'est que je veux afficher le résultat sur les 2 dernières années (mois/année donc 24 mois enfait) et là ça prends pas en compte le mois mais seulement l'année. J'avais pensé faire avec un CAST(LEFT(la_colonne, 2) AS UNSIGNED) > 02 mais ca le fait pour toutes les dates lors qu'il faudrai le faire que pour 02/2011 jusqu'à aujourd'hui

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Mes dates sont bien au format MM/AAAA, une vérification est faite lors de l'envoi du formulaire dans la base de donnée.
    Je bloque sur l'affichage des 24 derniers mois enfait, je vois pas comment m'y prendre

  7. #7
    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
    Essaie avec STR_TO_DATE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT -- les colonnes nécessaires
    FROM matable
    WHERE STR_TO_DATE(la_colonne_date, '%m/%Y') BETWEEN DATE_SUB(CURRENT_DATE, INTERVAL 24 MONTH) AND CURRENT_DATE
    Il est possible cependant que le résultat soit légèrement faussé dans certains cas car je crois que STR_TO_DATE(la_colonne_date, '%m/%Y') va transformer la chaîne de caractères en 'aaaa-mm-01' et le premier mois de la période souhaitée pourrait ne pas être pris en compte lorsque la requête est lancée après le premier jour du mois.

    Il faudrait alors compliquer un peu la formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT -- les colonnes nécessaires
    FROM matable
    WHERE STR_TO_DATE(la_colonne_date, '%m/%Y')
    	BETWEEN STR_TO_DATE(DATE_FORMAT(DATE_SUB(CURRENT_DATE, INTERVAL 24 MONTH), '%Y-%m'), '%Y-%m')
    		AND STR_TO_DATE(DATE_FORMAT(CURRENT_DATE, '%Y-%m'), '%Y-%m')
    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 !

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 26
    Points : 6
    Points
    6
    Par défaut
    Merci c'est super cool ça fonctionne très bien !!

Discussions similaires

  1. [AC-2002] Envoyer une tâche à un utilisateur quand une date est échue
    Par sabryluv dans le forum VBA Access
    Réponses: 5
    Dernier message: 13/06/2012, 21h45
  2. Supprimer des données quand la date est inférieur a X jour
    Par Syrisse dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 15/03/2011, 14h26
  3. Vérifier qu'une date est supérieure à la date actuelle
    Par lamis2009 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 24/05/2010, 13h18
  4. Détecter si une date est supérieure à une autre
    Par figo-mtp dans le forum Langage
    Réponses: 3
    Dernier message: 27/04/2010, 07h07
  5. [PDE]Bouton cliquable uniquement quand un projet est sélect
    Par Niko31 dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 12/01/2006, 01h25

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