2017-07-20 2 views
0

J'utilise mysql BETWEEN déclaration pour trouver le chevauchement entre les dates.Il retourne des résultats assez bons. Mais il y a encore quelques problèmes qui, je l'espère, peuvent être résolus. Merci.Utilisation de mysql entre chevauchement de date à des fins de réservation

C'est ma base de données pour les tests

 
booking_id |venue_id |startdate | enddate 
1001  |3  | 2017-07-21 |2017-07-23 

Ceci est ma requête; mon concept est soit l'un de la date d'arrivée de la requête, donc il retournera true.so j'utilise OU pour les tester.

 
SELECT * FROM `booking` WHERE ('user_inputdate_1' BETWEEN startdate AND enddate) OR ('user_inputdate_2' BETWEEN startdate AND enddate)' 

Mon test résultat

 
user_inputdate_1 user_inputdate_2 Result 
2017-07-19  2017-07-23   true 
2017-07-22  2017-07-24   true 
2017-07-21  2017-07-24   true 
2017-07-20  2017-07-24   false => this is the problem (it should be true) 

PS: S'il d'autres façons de résoudre ce problème, je les accepte. J'ai essayé beaucoup de questions mais ils n'ont pas fonctionné pour moi.

Enfin, merci pour tous vos efforts.

Répondre

0

Pour les dates d'entrée donnés:

2017-07-20 & 2017-07-24

ne start date est supérieure ou égale à 2017-07-21 et end date est pas non inférieure ou égale à 2017-07-23. C'est pourquoi le résultat false, qui est juste.

Ainsi, au lieu de between, essayez:

WHERE 'user_inputdate_1' <= `enddate` 
OR 'user_inputdate_2' => `startdate`; 

Modifié: manquant est égal à = signe

+0

il faut ajouter le signe égal pour both.anyways merci de la solution, ce travail nw pour moi! O WH 'user_inputdate_1' <= 'enddate' OU 'user_inputdate_2'> =' startdate'; – zlee