Rating@Mail.ru
IPB
Etersoft - from Windows to Linux
Etersoft
решения для перехода
с Windows на Linux
Дружественные сайты: alv.me и Rus-Linux.net

Здравствуйте, гость ( Вход | Регистрация ) Поиск · 

> 

Приглашаем вас в jabber-конференцию о питоне на pythonua@conference.jabber.ru :)
Темы от студентов с запросами готовых решений по заданиям зарываются не глядя.

 
Reply to this topic Start new topic
> [Даты, время] Поиск свободных дат в свободных диапазонах - Алгоритмы
gcc
bookmark
gyfbbdvkffmrljmmmwd
May 16 2017, в 15:07
Сообщение #1


Знаток линукса
Иконка группы

Сообщений: 526

Вставить имя   :   Цитата

ОС: FreeBSD 8.0 CURRENT

Группа: Участники

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

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

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

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

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

пример:

SQL
+-------+---------+------------+------------+
| 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 |
+-------+---------+------------+------------+


--------------------
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
May 16 2017, в 16:00
Сообщение #2


grammatikführer
Иконка группы

Сообщений: 12432

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

Группа: Модераторы разделов

Цитата(gcc @ 16th May 2017 - в 15:07) *
найти диапазон свободных дат по указанному промежутку дат

Не понял, надо найти диапазон из таблицы, который бы целиком помещался в заданный промежуток? Или наоборот, диапазон должен вмещать этот промежуток? В любом случае задача решается сравнением верхних и нижних границ, только знак сравнения меняется.


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
пожалуйста
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
gcc
bookmark
gyfbbdvkffmrljmmmwd
May 16 2017, в 16:12
Сообщение #3


Знаток линукса
Иконка группы

Сообщений: 526

Вставить имя   :   Цитата

ОС: FreeBSD 8.0 CURRENT

Группа: Участники

Автор темы
да, нужно найти даты которые входят в промежуток.

Я раздуплился, я сделал проще:

WHERE (DATE(from) <= '2017-04-20' AND DATE(to) >= '2017-04-22')

таким образом оно выберет даты в свободном диапазоне который есть.

Я думаю что будет верно.


--------------------
Go to the top of the page
 
+Quote Post
Bizdelnick
bookmark
gyfbbdvkffmrljmmmwd
May 16 2017, в 18:47
Сообщение #4


grammatikführer
Иконка группы

Сообщений: 12432

Вставить имя   :   Цитата

ОС: Debian GNU/Linux
Город: Санкт-Петербург

Группа: Модераторы разделов

Цитата(gcc @ 16th May 2017 - в 16:12) *
я сделал проще

Ровно это я и имел в виду. ☺


--------------------
Пишите правильно:
в консоли
вкупе (с чем-либо)
в общем
вообще
в течение (часа)
команда
новичок
пожалуйста
приемлемо
проблема
пробовать
трафик
Go to the top of the page
 
+Quote Post
gcc
bookmark
gyfbbdvkffmrljmmmwd
May 18 2017, в 01:03
Сообщение #5


Знаток линукса
Иконка группы

Сообщений: 526

Вставить имя   :   Цитата

ОС: FreeBSD 8.0 CURRENT

Группа: Участники

Автор темы
сейчас задача когда в один диапазон может входить несколько диапазонов

есть какой-то пример реализации в этом контексте?

вариант 1
т.е. надо искать диапазон:

2017-08-01 по 2017-08-05

среди диапазонов:
2017-08-01 по 2017-08-02
2017-08-01 по 2017-08-03
2017-08-05 по 2017-08-05
2017-08-01 по 2017-08-30
2017-08-01 по 2017-08-20



вариант 2
т.е. надо искать диапазон:

2017-08-01 по 2017-08-05

среди диапазонов:
2017-08-01 по 2017-08-02
2017-08-01 по 2017-08-03
2017-08-05 по 2017-08-05
2017-08-01 по 2017-08-30
2017-08-01 по 2017-08-20
2017-08-20 по 2017-08-20


Синим цветом я выделил то что не правильно


Пробовать как-то в тупую перебрать, да? можно мозг поломать smile.gif


--------------------
Go to the top of the page
 
+Quote Post
NickLion
bookmark
gyfbbdvkffmrljmmmwd
May 18 2017, в 15:38
Сообщение #6


аватар-невидимка
Иконка группы

Сообщений: 2969

Вставить имя   :   Цитата

ОС: openSUSE Tumbleweed x86_64
Город: Львів

Группа: Участники

Код
(DATE(from) BETWEEN start AND end) AND (DATE(to) BETWEEN start AND end)
Go to the top of the page
 
+Quote Post

 Reply to this topic Start new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 30th May 2017 - в 08:24




Rating@Mail.ru