проверьте, нет ли совпадений дат между начальной и конечной датой и временем (столбец db содержит начальную и конечную даты).

#mysql #sql

#mysql #sql

Вопрос:

Нужна помощь в sql (запрос mysql), чтобы проверить, что выбранные ‘startdate’ и ‘enddate’ не имеют записей в этом диапазоне.

ниже приведена моя таблица :

 ---------------------------------------------------------
| id |    start           |     end            |activity|
---------------------------------------------------------
| 1  |2011-10-30 13:00:00 |2011-10-30 14:00:00 | study  |
| 2  |2011-10-30 15:00:00 |2011-10-30 16:00:00 | tennis |
| 3  |2011-10-30 17:00:00 |2011-10-30 18:00:00 | golf   |
| 4  |2011-10-30 18:00:00 |2011-10-30 19:00:00 | gym    |
| 5  |2011-10-30 20:00:00 |2011-10-30 21:00:00 | study  |
---------------------------------------------------------
 

я надеюсь, что этот пост будет полезен и для других.Начальный и конечный столбцы относятся к типу данных datetime.В основном запрос, который я пытаюсь выполнить, — это проверить, не конфликтует ли активность.

нужна помощь. заранее благодарю вас.

Ответ №1:

В основном вам нужно посмотреть, находится ли начальная или конечная дата одной записи внутри начальной и конечной дат другой строки. Я сделал это с INNER JOIN помощью . Вы также можете сделать это с WHERE' помощью предложения вместо этого.

 Select [your fields]
From table t1
           Inner join table t2
           On t1.id <> t2.id
               And (( t1.start > t2.start
                    And t1.start < t2.end)
                     Or
                    (t1.end > t2.start
                    And t1.end < t2.end))