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

 MySQL Discussion :

Condition sur intervalles de temps


Sujet :

MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut Condition sur intervalles de temps
    Bonjour,
    soit une table avec une colonne date_début et une colonne date_fin qui comme leur nom l'indique contiennent les dates de début et de fin des tâches.
    Je recherche toutes les tâches à réaliser entre le 1° mai et le 31 mai soit un résultat retournant par exemple :
    1 une tâche débutant le 25 avril et se terminant le 5 mai
    2 une tâche débutant le 2 mai et se terminant le 3 mai
    2 une tâche débutant le 8 mai et se terminant le 8 mai
    4 une tâche débutant le 29 mai et se terminant le 3 juin
    5 une tâche débutant le 2 avril et se terminant le 14 juillet

    comment faire la requête la moins gourmande pour faire ce type de recherche ?

    D'avance merci pour vos suggestions

  2. #2
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Salut,

    Je pense qu'avec un DATEDIFF, tu pourrais obtenir ce résultat.

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT .... FROM la_table 
    WHERE MONTH(debut) = 5 
    OR MONTH(fin) = 5 
    OR DATEDIFF(debut, fin) > DATEDIFF(debut, '2007/05/01') 
    OR DATEDIFF('2007/05/31', fin) < DATEDIFF(debut, fin)

    Je suis vraiment pas sûr du résultat, à tester.

  3. #3
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Non datediff donne le nombre de jours d'écart entre 2 dates, c'est à dire que cela me renvoie 2 pour un datediff('2005-05-31','2005-05-29') et datediff('1981-05-10','1981-05-08').

    autre idée ?

  4. #4
    Membre chevronné
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Par défaut
    Je sais bien que ça retourne le nombre de jour entre 2 dates

    Tu as testé au moins ?

  5. #5
    Membre éprouvé Avatar de Christophe Charron
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 934
    Par défaut
    Citation Envoyé par Xunil
    Je sais bien que ça retourne le nombre de jour entre 2 dates

    Tu as testé au moins ?
    Oui,
    j'ai entre autre choses tous les enregistrements de mai 1998,1999,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009 mais j'avais fait un limit 10000 sans ordonner

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Tu peux essayer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
    $dateDeb = '2007-05-01';
    $dateFin = '2007-05-31';
     
    $sql = 'SELECT laTache, date_debut, date_fin
    	FROM laTable
    	WHERE (date_debut BETWEEN \'' . $dateDeb . '\' AND \'' . $dateFin . '\')
    	OR (date_fin BETWEEN \'' . $dateDeb . '\' AND \'' . $dateFin . '\')';
    ?>

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

Discussions similaires

  1. [MySQL] Requête MySql sur un intervalle de temps
    Par Equinoxe5 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 24/01/2012, 13h35
  2. Mesures sur un intervalle de temps
    Par iza76 dans le forum SSAS
    Réponses: 7
    Dernier message: 08/02/2010, 15h53
  3. Réponses: 3
    Dernier message: 17/09/2008, 17h04
  4. Requette access sur intervalle de temps
    Par skyman272 dans le forum Access
    Réponses: 15
    Dernier message: 18/02/2006, 10h45
  5. Réponses: 6
    Dernier message: 15/02/2006, 18h06

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