MySQL et chevauchement de 2 périodes

MySQL et chevauchement de 2 périodes - SQL/NoSQL - Programmation

Marsh Posté le 27-03-2007 à 09:27:25    

Bonjour,

 

Je me tourne vers vous ayant quelques difficultés pour comparer 2 périodes. Je m'explique :
J'utilise MySQL comme SGBD et PHP pour la partie programmation.

 

Dans cette base de données, j'ai une table (table_X) qui a 3 champs :
- id (type int)
- datedebut (type date)
- datefin (type date)

 

Je récupère via une page PHP 2 champs au format "Date MySQL" (soit xxxx-xx-xx)

 

Je voudrais savoir si dans ma table il existe déjà cette période (facile) ou bien si cette période n'en chevauche pas une autre (plus compliqué) déjà présente dans ma base.

 

Est-ce que quelqu'un pourrait me donner un coup de main ?

 

Merci à tous

Reply

Marsh Posté le 27-03-2007 à 09:27:25   

Reply

Marsh Posté le 27-03-2007 à 09:35:05    

le format xxxx-xx-xx c'est ISO chaispucombien, qui est aussi celui utilisé par la norme XML, pas le format "Date MySQL"...
 
 
qu'entends-tu par chevaucher ?
 
y'a 4 cas différents de chevauchement : (et du coup, t'as la solution à ton problème, il ne reste plus qu'à transcrire)
 
Intervals A et B :
 
A contient B
B contient A
A ne contient que la date de début de B
A ne contient que la date de fin de B
 
tu veux détecter les 4 cas ? tu veux savoir les différencier ?


Message édité par MagicBuzz le 27-03-2007 à 09:35:31
Reply

Marsh Posté le 27-03-2007 à 09:36:50    

(pour détecter les 4 cas, c'est simple : tu dois vérifier si au moins une date d'un des deux intervals est comprise dans l'autre interval)

Reply

Marsh Posté le 27-03-2007 à 09:56:33    

Par chevauchement j'entends :
Soit 2 périodes :
A : 01/01/2007 - 01/08/2007
B : 02/03/2007 - 31/09/2007
 
Soit A déjà stocké en base de donnée. Je voudrais tester si la période B que je veux sauvegarder chevauche uen autre période dans la table (ici A). Dans le cas présent, B chevauche A donc je dois refuser l'ajout

Reply

Marsh Posté le 27-03-2007 à 09:57:34    

donc, c'est les 4 cas que tu veux tester, et dans ce cas, t'as la solution au poste précédent

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed