[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Разговоры ни о чём

Модератор: vadim64

_proftpd
проходил мимо

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение _proftpd » 2017-05-16 15:21:59

Здравствуйте, требуется помощь

Даны диапазоны разных дат, в диапазон могут входить даты с разных месяцев. (Это диапазон свободных дат, которые свободные в данный момент)

задача: найти диапазон свободных дат по указанному промежутку дат 2017-04-10 - 2017-04-13 или другой промежуток

Я ума не приложу как это сделать. Может подсказать?

Это НЕ задача в универе, это реальная задача :)

пример:

Код: Выделить всё

+-------+---------+------------+------------+
| city | id  | to     | from   |
+-------+---------+------------+------------+
|    15 |   1 | 2017-04-16 | 2017-04-16 |
|    15 | 2 | 2017-04-16 | 2017-04-16 |
|    15 | 3 | 2017-04-14 | 2017-04-14 |
|    15 | 3 | 2017-04-14 | 2017-04-14 |
|    15 | 3 | 2017-04-14 | 2017-04-14 |
|    15 | 4 | 2017-04-14 | 2017-04-14 |
|    15 | 5 | 2017-04-14 | 2017-04-14 |
|    15 | 6 | 2017-04-14 | 2017-04-14 |
|    15 | 7 | 2017-04-14 | 2017-04-14 |
|    15 | 8 | 2017-04-14 | 2017-04-14 |
|    15 | 9 | 2017-04-15 | 2017-04-15 |
|    15 | 9 | 2017-04-22 | 2017-04-16 |
|    15 | 10 | 2017-04-15 | 2017-04-15 |
|    15 | 10 | 2017-04-22 | 2017-04-16 |
|    15 | 11 | 2017-04-15 | 2017-04-15 |
|    15 | 11 | 2017-04-22 | 2017-04-16 |
|    15 | 22 | 2017-04-15 | 2017-04-15 |
|    15 | 22 | 2017-04-22 | 2017-04-16 |
|    15 | 23 | 2017-05-31 | 2017-04-15 |
|    15 | 24 | 2017-04-30 | 2017-04-15 |
+-------+---------+------------+------------+

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
Neus
капитан
Сообщения: 1977
Зарегистрирован: 2008-09-08 21:59:56

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение Neus » 2017-05-16 17:07:26

Я вижу тут 4 ситуации:
1. Промежуток равен диапазону
2. Промежуток уже диапазона
3. Промежуток шире диапазона
4. Промежуток пересекается с диапазоном
В математической нотации лень писать :)
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!

Аватара пользователя
Alex Keda
стреляли...
Сообщения: 35454
Зарегистрирован: 2004-10-18 14:25:19
Откуда: Made in USSR
Контактная информация:

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение Alex Keda » 2017-05-16 23:07:12

на mysql, судя по виду образца?
перебором, если производительность не важна
Убей их всех! Бог потом рассортирует...

proftpd
проходил мимо

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение proftpd » 2017-05-18 1:14:39

Neus писал(а):Я вижу тут 4 ситуации:
1. Промежуток равен диапазону
2. Промежуток уже диапазона
3. Промежуток шире диапазона
4. Промежуток пересекается с диапазоном
В математической нотации лень писать :)
нужны как раз все ситуации которые Вы перечислили

Аватара пользователя
Neus
капитан
Сообщения: 1977
Зарегистрирован: 2008-09-08 21:59:56

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение Neus » 2017-05-18 7:57:29

proftpd писал(а):
Neus писал(а):Я вижу тут 4 ситуации:
1. Промежуток равен диапазону
2. Промежуток уже диапазона
3. Промежуток шире диапазона
4. Промежуток пересекается с диапазоном
В математической нотации лень писать :)
нужны как раз все ситуации которые Вы перечислили
в общем это пересечение множеств надо найти
обозначим границы промежутка как LB и RB, где LB <= RB
получается эти множества пересекаются когда:
From <= RB and LB <= To
т.е.:
select * from table
where From <= RB and LB <= To
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!

snorlov
подполковник
Сообщения: 3927
Зарегистрирован: 2008-09-04 11:51:25
Откуда: Санкт-Петербург

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение snorlov » 2017-05-18 9:27:29

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

Аватара пользователя
Neus
капитан
Сообщения: 1977
Зарегистрирован: 2008-09-08 21:59:56

[Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы

Непрочитанное сообщение Neus » 2017-05-18 13:06:56

snorlov писал(а):Может быть просто тупо временную таблицу заполнить всеми датами из промежутка, после чего удалить все даты, которые уже имеются...
и каков будет результат?
например есть рекорд с диапазоном 10-20, а промежуток задан 12-18 -- в итоге пустой список...
Physics is mathematics with the constraint of reality.
Engineering is physics with the constraint of money.

LOR захватили ситхи.
Добро пожаловать на светлую сторону!