2013-07-03 3 views
1

Ищите какую-то помощь, так как на это время борется.Определите, подходит ли диапазон дат в течение другого диапазона дат.

У меня есть таблица диапазонов дат:

"time_from" 2013-06-03 00:00:00, "time_till" 2013-07-03 00:00:00 
"time_from" 2013-05-03 00:00:00, "time_till" 2013-06-03 00:00:00 

Тогда у меня есть форма, где вы представить новый диапазон дат.

Когда эта форма отправлена, я хочу проверить, что любая часть нового диапазона дат не конфликтует с какой-либо частью существующих диапазонов дат.

Может кто-нибудь помочь, я не суетился, это делается в MySQL или PHP.

Благодаря

+0

PHP 'strtotime()' может помочь вам: http://php.net/manual/en/function.strtotime.php – bozdoz

ответ

1

Вы можете сделать это легко с помощью MySQL Query

select * from table where 
$variable_start BETWEEN time_from AND time_till OR $variable_end BETWEEN time_from AND time_till 

у вас будут строки, если ваше время падает между диапазонами дат.

+0

Как это работает для сравнения диапазона дат с диапазоном дат, поскольку я предполагаю, что вы сравниваете единый диапазон дат? – Elliot

+0

Удивительный, ваш и другие ребята, похоже, сейчас работают! – Elliot

1

вы можете проверить, если строка существует с таким же диапазоном через SQL

select if(count(*) >0,'conflicts', 'does not conflict') 
from yourTable 
where ($startTime between time_from and time_till) 
or ($endTime between time_from and time_till) 

если на дату ввода лежит существующий диапазон дат, он будет показывать конфликты в противном случае это приведет к не конфликт

+0

Как это работает? – DevZer0

+0

Это только проверяет, что даты начала и окончания не конфликтуют. Он не будет проверять, что любое время между датами конфликтует? – Elliot

+0

изменил запрос, чтобы проверить между диапазонами – chetan

0

Предполагая, что это означает, что есть конфликт.

Вы должны проверить, что для каждой строки:

Ваша дата начала диапазона не упали до начала текущего диапазона дат и ваш конец диапазона дат не упали после текущей даты начала диапазона

И

Ваша дата начала диапазон не упал до начала текущего диапазона дат и вашего конец диапазона дат не упали после текущей даты диапазона кОНЦА

И

Ваша дата начала диапазона не упали до текущего диапазона дат и ваш диапазон дат конца не упали после текущей даты начала диапазона

И

Ваша дата начала диапазона не упали после начала текущего диапазона дат и ваш конец диапазона дат не падает до текущего диапазона дат END

Смежные вопросы