Запросы, планы, оптимизация запросов, ...
Модераторы: kdv, CyberMax
-
warmind
- Сообщения: 3
- Зарегистрирован: 25 мар 2005, 13:10
Сообщение
warmind » 25 мар 2005, 13:25
Table имеет два поля DBL1 и DBL2, означающие начало и конец периода, причём период может растягиваться на разные годы:
28.12.04 : 12.01.05
Нужно сделать выборку с 01.12.04 по 31.12.04 или
с 01.01.05 по 31.01.05
то есть из интервала нужно выделить подинтервал дат
ясное дело что простым between не обойтись, куда копать?
-
kdv
- Forum Admin
- Сообщения: 6595
- Зарегистрирован: 25 окт 2004, 18:07
Сообщение
kdv » 25 мар 2005, 16:09
тебе надо доп. поле, которое хранит количество дней от начала старта "интервала". то есть длительность события в днях. В общем, недоработал ты модель данных...
-
Ivan_Pisarevsky
- Заслуженный разработчик
- Сообщения: 644
- Зарегистрирован: 15 фев 2005, 11:34
Сообщение
Ivan_Pisarevsky » 28 мар 2005, 09:57
А УДФкой не удастся отмазаться?
типа берем 2 параметра (2 даты) выплевываем разницу в днях (integer)...
-
warmind
- Сообщения: 3
- Зарегистрирован: 25 мар 2005, 13:10
Сообщение
warmind » 29 мар 2005, 11:10
Делаем две функции (могут быть варианты).
f_max(date1, date2)
f_min(date1, date2)
а потом запрос:
select f_max(DBO, report_begin_date), f_min(DEO, report_end_date)
from <твоя_таблица>
where (DBO >= report_start_date) or (DEO <= report_end_date)
Dmitry Prokopenko (C)