Re: amount of overlaping dates
| From: | Merlin Morgenstern | Date: | Thu, 03 Dec 2009 14:56:47 +0000 |
| Subject: | Re: amount of overlaping dates | ||
| References: | 1 2 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-300242@lists.php.net to get a copy of this message | ||
David Otton wrote:
2009/12/3 Merlin Morgenstern <merlin_x@fastmail.fm>:That is what I thought first, too! But this does not work correct as there might be a booking starting for example tomorrow. There needs to be free place for the entire booking period. I am a bit further now, but still stuck. So far I could pull out all dates from the database that are within the range: SELECT * FROMI am searching for a way to identify the amount of simultanious date ranges. Example: array start=('1.12', '5.12', '9.12'); array end =('8.12', '12.12', '16.12'); Looks like this in a table: start endStore the start and end times of each event in an SQL table. SELECT COUNT(*) FROM1.12 8.12 5.12 12.12 9.12 16.12Obviously the first and last daterange do not overlap. So the amount of overlaping bookings is 2. But how to identify this with PHP?!eventWHEREstart<= NOW() ANDend>= NOW() gets you the number of events that are happening right now.
datetest WHERE '2009-12-06' between start and end OR '2009-12-13' between start and end
Now the trick would be to find overlaps. Here is an example:
I have a table with following booking info:
start end
2009-12-01 2009-12-08
2009-12-05 2009-12-12
2009-12-09 2009-12-16
I want to find out the first possible booking range for 14 day period begining from 2009-12-06 at the earliest where a max of 3 bookings are present. The result schould be: 2009-12-06
First I am pulling out all dates between the desired range:
SELECT *
FROM datetest
WHERE '2009-12-06'
BETWEEN START AND END OR '2009-12-13'
BETWEEN START AND END
LIMIT 0 , 30
Now the tricky parts starts where I do not know how to find out that the first daterange in the table and the last daterange do not overlap.
Any ideas?