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 :

Liste de TOUTES les dates entre deux dates (sans table)


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut Liste de TOUTES les dates entre deux dates (sans table)
    Bonjour à tous.

    Je ne sais pas si cette fonction existe, mais je m'explique:

    Je dois selectionner dans une table contenant [ Date, Valeurs ] toutes les dates que les utilisateurs n'ont PAS renseignées.

    En fait chaque date depuis une date X est sensée être renseignée (moins les WE, mais ca je vois comment le gérer).

    Savez vous comment dire à MYSQL de lister TOUTES les dates existantes entre le 31/12/2012 et ma curdate()?
    Le but étant ensuite de ressortir uniquement celles qui ne sont pas renseignées dans mon champ 'Date' en base.

    Merci d'avance, car mes recherches ne me retournent que des solutions pour selectionner des dates existantes en base (between, etc.)

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Personne n'a une idée? Je suis un peu perdu là

  3. #3
    Membre éclairé Avatar de ypcman
    Homme Profil pro
    Retraité codeur !
    Inscrit en
    Janvier 2011
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité codeur !
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 599
    Points : 887
    Points
    887
    Par défaut
    Bonjour.
    En MySQL pur, je ne vois pas de solution simple. En revanche, tu devrais poser la question dans le forum MySQL procédural qui saura peut-être te proposer quelque chose avec du WHILE DO
    En revanche, si tu programmes avec du php ou tout autre langage, il te suffit de boucler sur ton intervalle de date en interrogeant ta table pour chaque jour et chercher les requètes qui ne retournent aucun enregistrement
    Code MySQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT date FROM ma_table WHERE date='$date_qui_varie'
    Participez vous aussi !
    Message utile
    Discussion résolue

  4. #4
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    C'est effectivement compliqué avec une simple requête.

    J'aurais tendance à déporter la problématique coté PHP puisque j'imagine qu'il va ensuite falloir traiter ces jours :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    //Jour récupéré de mysql avec un truc du genre SELECT DISTINCT monchampDate FROM matable WHERE ....
    $selected = array('2013-01-05','2013-02-06');
     
    //Date limite de recherche
    $limite = new DateTime('2012-12-31');
    //date actuelle
    $now = new DateTime();
     
    //Tous les jours possible entre $limite et $now ($limite inclus)
    $allDays = array();
    $allDays[] = $limite->format('Y-m-d');
     
    // Tant que ma limite est pas = à ajourdhui je lui ajoute un jour
    while($limite < $now) {
        $limite->add(new DateInterval('P1D'));
        $allDays[] = $limite->format('Y-m-d');
    }
     
    //Je fais la différences de tous les jours possibles et ceux effectivement rentré.
    //Ca retourne tous les jours non présents dans $selected
    $nonsaisi = array_diff($allDays,$selected));
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Ok, merci beaucoup Grunk

    J'avais bien mon idée en php mais je pensais qu'il était possible de dire à mysql:

    "selectionne les dates qui ne sont pas renseignées dans cette table entre cette date et aujourd'hui"

    Vu que Mysql peut sortir d'une simple date ton numéro de semaine, ton jour de la semaine, une datediff, etc. je me disais qu'il devait bien avoir un calendrier tout fait dans ses petites entrailles.

    Du coup y'a cette solution du php ou une simple table calendar que je comparerais avec un "not in select date from calendar".

  6. #6
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    Créez une table Calendrier contenant toutes les dates, et faites une jointure externe dessus.

Discussions similaires

  1. Recherche toute les dates entre deux dates
    Par Oberown dans le forum Développement
    Réponses: 3
    Dernier message: 12/01/2010, 10h58
  2. Sélectionner toutes les dates entre deux dates
    Par corgato dans le forum Langage
    Réponses: 2
    Dernier message: 09/11/2008, 20h50
  3. Chercher les dimanches entre deux dates !
    Par sablito dans le forum Requêtes
    Réponses: 1
    Dernier message: 25/12/2007, 22h05
  4. [Dates] Les mois entre deux dates
    Par kagura dans le forum Langage
    Réponses: 2
    Dernier message: 28/06/2006, 11h38
  5. [VB6]sortir toutes les dates entre deux dates
    Par AlfiQue dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/02/2006, 19h09

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