Troubles with Date Period

Запросы, планы, оптимизация запросов, ...

Модераторы: kdv, CyberMax

Ответить
warmind
Сообщения: 3
Зарегистрирован: 25 мар 2005, 13:10

Troubles with Date Period

Сообщение 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)

Ответить