Нахождение интервалов в запросе
Запрос.Текст =
"ВЫБРАТЬ
| ДАТАВРЕМЯ(2023, 1, 1) КАК ДатаНачала,
| ДАТАВРЕМЯ(2023, 1, 1) КАК ДатаОкончания
|ПОМЕСТИТЬ ВТИсходныеДанные
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ДАТАВРЕМЯ(2023, 1, 2),
| ДАТАВРЕМЯ(2023, 1, 2)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ДАТАВРЕМЯ(2023, 1, 5),
| ДАТАВРЕМЯ(2023, 1, 9)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ДАТАВРЕМЯ(2023, 1, 11),
| ДАТАВРЕМЯ(2023, 1, 11)
|
|ОБЪЕДИНИТЬ
|
|ВЫБРАТЬ
| ДАТАВРЕМЯ(2023, 1, 12),
| ДАТАВРЕМЯ(2023, 1, 12)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| Справа.ДатаНачала КАК ДатаНачала,
| Справа.ДатаОкончания КАК ДатаОкончания,
| СУММА(РАЗНОСТЬДАТ(Слева.ДатаНачала, Слева.ДатаОкончания, ДЕНЬ) + 1) КАК Интеграл
|ПОМЕСТИТЬ ВТИнтегралы
|ИЗ
| ВТИсходныеДанные КАК Слева
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТИсходныеДанные КАК Справа
| ПО Слева.ДатаНачала <= Справа.ДатаОкончания
|
|СГРУППИРОВАТЬ ПО
| Справа.ДатаНачала,
| Справа.ДатаОкончания
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МИНИМУМ(ВТИнтегралы.ДатаНачала) КАК ДатаНачала,
| МАКСИМУМ(ВТИнтегралы.ДатаОкончания) КАК ДатаОкончания
|ИЗ
| ВТИнтегралы КАК ВТИнтегралы
|
|СГРУППИРОВАТЬ ПО
| ДОБАВИТЬКДАТЕ(ВТИнтегралы.ДатаОкончания, ДЕНЬ, -ВТИнтегралы.Интеграл)"
Описание дублирует название. Удалите описание, если информации в заголовке достаточно.
Объединение непересекающихся интервалов в запросе
Разбиение произвольного периода на интервалы в запросе
Инвертирование периодов в запросе
Сжатое представление последовательности дат запросом
Получение интервалов неизменности курсов валют
ОбработчикиОбновленияВИнтервале (БСП)
Определение пересечения интервалов в кольце
Определить элементарные интервалы, образующиеся при пересечении всех исходных интервалов
Проверяет корректность вводимых дат, не проверяет заполненность дат