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

PHP & Base de données Discussion :

Requete date anniversaire sous 15 jours [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut Requete date anniversaire sous 15 jours
    Bonjour,

    je chercher à afficher les clients d'un restaurant dont l'anniversaire est dans les 15 prochains jours.

    J'ai un champ date_naissance au format date - 1980-05-21

    Je souhaiterais faire une recherche pour les dates entre la date du jour et J+15, mais en recherchant uniquement sur Mois et Jour car évidemment l'année ne correspond pas.

    J'ai pensé à un between mais en même temps, il faudrait que fasse un substring des caractères.

    Si quelqu'un a une idée ?

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    Je viens d'essayer ça, mais ça ne me retourne rien alors que j'ai mis un contact avec date de naissance le 22/06.

    SELECT nom,prenom, date_naissance FROM contacts WHERE STR_TO_DATE(date_naissance, '%m-%d') BETWEEN STR_TO_DATE('06-20', '%m-%d') AND STR_TO_DATE('06-30', '%m-%d')

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2012
    Messages
    135
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2012
    Messages : 135
    Points : 69
    Points
    69
    Par défaut
    Celle-ci marche.

    SELECT *
    FROM contacts
    WHERE DATE_FORMAT( `date_naissance` , '%m%d' )
    BETWEEN DATE_FORMAT( NOW( ) , '%m%d' )
    AND DATE_FORMAT( DATE_ADD( NOW( ) , INTERVAL 7
    DAY ) , '%m%d' )

  4. #4
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    Salut,
    Cela ne marche pas si les 2 dates sont à cheval sur 2 années.
    Par exemple : 28/12/2012 => 02/01/xxxx (çà fait bien - de 7 jours et pourtant, la requête ne renvoie rien)

    Une idée ?

    Fabrice

  5. #5
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Bonjour,

    Et comme ça :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT * 
    FROM contacts
    WHERE DATE(CONCAT_WS('-', YEAR(NOW()), MONTH(`date_naissance`), DAY(`date_naissance`))) BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 7 DAY);
    ?

  6. #6
    Membre habitué
    Avatar de __fabrice
    Homme Profil pro
    Développeur Back-End
    Inscrit en
    Août 2004
    Messages
    404
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Août 2004
    Messages : 404
    Points : 194
    Points
    194
    Par défaut
    Ceci marche mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT firstname,birthday
     
    FROM ps_customer
     
    WHERE
     
    datediff( MAKEDATE( YEAR(NOW()) , DAYOFYEAR(birthday) ) , NOW()) BETWEEN 0 AND 30
     
    OR
     
    datediff( MAKEDATE( YEAR(NOW())+1 , DAYOFYEAR(birthday) ) , NOW()) BETWEEN 0 AND 30;

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

Discussions similaires

  1. Ajouter des jours à une date stockée sous forme de chaine
    Par Christophe Charron dans le forum Firebird
    Réponses: 9
    Dernier message: 17/09/2011, 07h38
  2. requete date sous sas
    Par ghatfan99 dans le forum SAS Base
    Réponses: 3
    Dernier message: 30/04/2009, 14h18
  3. date anniversaire dans 15 jours en SQL
    Par fa310428 dans le forum Langage SQL
    Réponses: 6
    Dernier message: 19/02/2007, 19h03
  4. Réponses: 7
    Dernier message: 12/01/2007, 11h09
  5. Requete avec une sous-requete... Ne fonctionne qu'a moitie..
    Par mythtvtalk.com dans le forum MS SQL Server
    Réponses: 10
    Dernier message: 18/08/2003, 09h54

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