Генерация запросом последовательности дат в периоде

Статья покажет, как сформировать таблицу с датами в заданном временном промежутке, используя SQL-запрос. Пример демонстрирует создание виртуальной таблицы для дальнейшей обработки данных.

Пример формирования таблицы с датами в указанном периоде. Запрос из примера можно использовать, для формирования виртуальной таблицы, при разработке более сложных запросов.


Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
	|	ДатыПериода.Дата КАК Дата
	|ИЗ
	|	(ВЫБРАТЬ
	|		ДОБАВИТЬКДАТЕ(&КонецПериода, ДЕНЬ, -1 * (ЧислаЕдиницы.Значение + 10 * ЧислаДесятки.Значение + 100 * ЧислаСотни.Значение + 1000 * ЧислаТысячи.Значение)) КАК Дата
	|	ИЗ
	|		(ВЫБРАТЬ 0 КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ЧислаЕдиницы,
	|		(ВЫБРАТЬ 0 КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ЧислаДесятки,
	|		(ВЫБРАТЬ 0 КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ЧислаСотни,
	|		(ВЫБРАТЬ 0 КАК Значение ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9) КАК ЧислаТысячи
	|	) КАК ДатыПериода
	|ГДЕ
	|	ДатыПериода.Дата МЕЖДУ &НачалоПериода И &КонецПериода
	|УПОРЯДОЧИТЬ ПО
	|	Дата";

Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("КонецПериода", КонецПериода);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
	
КонецЦикла;

Поделиться с друзьями
Smirnov code
Добавить комментарий