проверить перекрывающиеся времена начала и окончания, MySQL - PullRequest
1 голос
/ 23 октября 2010

Я застрял с этим и нуждаюсь в помощи.

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'))

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

если одна запись имеет конечное время, например 22:30, следующая запись не может иметь начальное время 22:15 и т. Д. так что с этим я не могу получить это считать ...

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

Заранее спасибо

любая помощь приветствуется Спасибо

Ответы [ 2 ]

0 голосов
/ 17 марта 2014

Попробуйте этот запрос, чтобы найти время задачи наложения на 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
0 голосов
/ 24 октября 2010
 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'))

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

eaxmple

22: 00 22: 15

22: 1523: 15

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...