2010-10-23 2 views
1

Я застрял в этом и нуждаюсь в некоторой помощи.проверить совпадение начального времени окончания, MySQL

SELECT COUNT(id) AS counter 
    FROM time_reporter 
WHERE user_id='$user_id' 
    AND actual_date = '$date' 
    AND ((start_time > '$start_time' AND end_time < '$end_time')) 

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

если одна запись имеет END_TIME пример 22: 30 следующей записи не может быть start_time 22:15 и т. Д. поэтому с этим я не могу получить счет ...

Так что следующая запись не будет перекрываться или вмешиваться в любые существующие временные интервалы в тот же день и такими же пользователь ... Также было бы неплохо получить доступный диапазон раз (свободные временные интервалы), это мой второй вопрос ...

Спасибо заранее

любая оцененная помощь Спасибо

ответ

0
SELECT COUNT(id) AS counter FROM time_reporter WHERE user_id='$user_id' AND actual_date = '$date' AND ((start_time > '$start_time' AND end_time < '$end_time') OR (end_time > '$start_time' AND end_time < '$end_time')) 

Я думаю, что нашел решение выше код предотвращает start_time, end_time перекрывающийся ...

eaxmple

22:00 22:15

22:15 23:15

, но это опять не так ... 23:00 23:45

там может быть улучшение, чтобы сделать его пуленепробиваемым ...

0

Попробуйте этот запрос для находки перекрытие задачи на mysql

SELECT * FROM your_table Where (('2014-02-05 20:00:00' <= end_time and '2014-02-05 20:00:00' > start_time) OR (IF(('2014-02-05 08:00:00' < end_time),IF('2014-02-05 08:00:00'>=start_time,false,IF('2014-02-05 20:00:00'>start_time,true,false)) ,false)) OR ('2014-02-05 08:00:00' =start_time and '2014-02-05 20:00:00'=end_time)) and user_id =116 
Смежные вопросы