Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/04/2007, 17h58   #1
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
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 : 768
Points : 492
Points : 492
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
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 19h14   #2
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Salut,

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

Code SQL :
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.
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 20h45   #3
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
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 : 768
Points : 492
Points : 492
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 ?
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 21h05   #4
Membre expérimenté
 
Inscription : septembre 2006
Messages : 685
Détails du profil
Informations forums :
Inscription : septembre 2006
Messages : 685
Points : 564
Points : 564
Je sais bien que ça retourne le nombre de jour entre 2 dates

Tu as testé au moins ?
Xunil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/04/2007, 22h40   #5
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
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 : 768
Points : 492
Points : 492
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
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 09h19   #6
Membre Expert
 
Inscription : août 2002
Messages : 1 036
Détails du profil
Informations forums :
Inscription : août 2002
Messages : 1 036
Points : 1 166
Points : 1 166
Bonjour,

Tu peux essayer :
Code :
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 . '\')';
?>
jeca est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/04/2007, 10h09   #7
Membre éprouvé
 
Avatar de Christophe Charron
 
Homme Christophe Charron
Développeur informatique
Inscription : juillet 2005
Messages : 768
Détails du profil
Informations personnelles :
Nom : Homme Christophe Charron
Âge : 51
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 : 768
Points : 492
Points : 492
Citation:
Envoyé par jeca
Bonjour,

Tu peux essayer :
Code :
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 . '\')';
?>
Bonjour,
c'est ce à quoi je viens d'arriver à l'instant !!! Je tentais de me noyer dans un verre d'eau
Merci.
__________________
Cordialement,
Christophe Charron
Pour consulter mon site professionnel, vous pouvez cliquer sur le bouton prévu à cet effet, juste sous la signature .
Christophe Charron est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web