SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.12.2016 10:40:04

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Определить покрывает ли один период другим

Прошу помочь.
Есть таблица с двумя полями, которые определяют период D с датами D1 и D2.
D1 всегда меньше или равно D2.
Периоды определены с точностью до минуты.

Нужно определить, что период P определяющими датами P1 и P2 (например, год, месяц, день, час) полностью покрывается периодами из таблицы.
Желательно решить с помощью SQL запроса.

Заранее спасибо за любые идеи!

Отредактированно klow (20.12.2016 10:40:38)

Неактивен

 

#2 20.12.2016 12:04:00

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Определить покрывает ли один период другим

не понятно, трактовать можно по разному
можно на маленьком тестовом примере

Неактивен

 

#3 20.12.2016 12:13:10

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Определить покрывает ли один период другим

Пример таблицы:
D1, D2
2016-01-01 00:00, 2016-02-01 00:00
2016-02-01 00:00, 2016-03-01 15:00
2016-03-01 16:00, 2016-12-31 00:00

Период год 2016 (P1 - 2016-01-01 00:00, P2 - 2016-12-31 23:59)
не покрывается периодами из таблицы есть разрывы, например 2016-03-01 15:00 - 2016-03-01 16:00 и 2016-12-31 00:00 - 2016-12-31 23:59

Период месяц январь 2016 года (P1 - 2016-01-01 00:00, P2 - 2016-01-31 23:59)
полностью покрывается периодами таблицы

Неактивен

 

#4 20.12.2016 13:10:27

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5827

Re: Определить покрывает ли один период другим

1. определить диапазоны, которые пересекаются с заданным
c помощью пользовательских переменных пройти по диапазонам по возрастанию d1, определяя наличие разрыва

2. преобразовать заданный диапазон в набор секунд (или заранее опорная таблица)
проверить существует ли секунда не попадающая ни в какой из диапазонов

чую, что есть хороший вариант, но не соображу как

Неактивен

 

#5 20.12.2016 13:20:38

klow
Старожил
Зарегистрирован: 06.12.2014
Сообщений: 411

Re: Определить покрывает ли один период другим

Спасибо!
Да, эти варианты возможны, но не очень хороши.
Второй вариант даже можно упростить в моем случае - раскладывая до минуты. То есть, получиться, примерно, 525 тыс. значений для года.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson