Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 даты укладывающиеся в интервал  [new]
даты
Guest
drop table test
/
create table test (begin_date date, end_date date)
/
insert into test values (to_date('11.03.2008', 'DD.MM.YYYY'), to_date('15.03.2008', 'DD.MM.YYYY'))
/
insert into test values (to_date('20.03.2008', 'DD.MM.YYYY'), to_date('30.03.2008', 'DD.MM.YYYY'))
/
commit
/
помогите, туплю. не как не могу получить даты, укладывающиеся в интервалы из таблицы test
подскажите запрос!
т.е.
11.03.2008
12.03.2008
13.03.2008
14.03.2008
15.03.2008
20.03.2008
21.03.2008
22.03.2008
23.03.2008
24.03.2008
25.03.2008
26.03.2008
27.03.2008
28.03.2008
29.03.2008
30.03.2008
10 фев 09, 16:19    [6802332]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
даты
Guest
пока придумал только вот так, но чувствую чтото не так, чересчур сложно
with 
  RA as
  (
  select BEGIN_DATE, END_DATE
  from TEST
  ),
  MM as
  (
  select min(BEGIN_DATE) MIND, max(END_DATE) MAXD
  from RA
  ),
  AD as
  (
  select MM.MIND+rownum-1 DAT
  from dual, MM
  connect by (level-1 <= (MM.MAXD-MM.MIND))
  )
select AD.DAT
from AD, RA
where (AD.DAT between RA.BEGIN_DATE and RA.END_DATE)
10 фев 09, 16:26    [6802379]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
AndrewS
Member

Откуда: Минск
Сообщений: 487
with DATES as
(	select trunc(sysdate) + rownum d from dual connect by level <= 10)
, RANGES as
(	select date '2009-02-12' dbeg, date '2009-02-15' dend from dual union all
	select date '2009-02-18' dbeg, date '2009-02-19' dend from dual 
)
select distinct d.d
  from DATES	d
  cross join RANGES 	r
 where d.d between r.dbeg and r.dend
/
10 фев 09, 16:30    [6802408]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
даты,
with test as (
              select to_date('11.03.2008', 'DD.MM.YYYY') begin_date, to_date('15.03.2008', 'DD.MM.YYYY') end_date from dual union all
              select to_date('20.03.2008', 'DD.MM.YYYY'), to_date('30.03.2008', 'DD.MM.YYYY') from dual),
t as (
      select begin_date + level - 1 d
      from (select min(begin_date) begin_date, max(end_date) end_date from test)
      connect by level <= end_date - begin_date + 1
      )
select t.d
from t, test
where t.d between test.begin_date and test.end_date
10 фев 09, 16:46    [6802561]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
__vvp_
Member

Откуда: Санкт-Петербург
Сообщений: 1158
__vvp_
даты,
with test as (
              select to_date('11.03.2008', 'DD.MM.YYYY') begin_date, to_date('15.03.2008', 'DD.MM.YYYY') end_date from dual union all
              select to_date('20.03.2008', 'DD.MM.YYYY'), to_date('30.03.2008', 'DD.MM.YYYY') from dual),
t as (
      select begin_date + level - 1 d
      from (select min(begin_date) begin_date, max(end_date) end_date from test)
      connect by level <= end_date - begin_date + 1
      )
select t.d
from t, test
where t.d between test.begin_date and test.end_date

При необходимости добавить distinct
10 фев 09, 16:47    [6802574]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
Elic
Member

Откуда:
Сообщений: 29976
Для баловства :
select begin_date + extractvalue(d.column_value, '/I') as d
  from test, table(xmlsequence(xmltype(cursor(select level-1 as i from dual connect by level <= end_date - begin_date + 1)).extract('//I'))) d;
10 фев 09, 16:52    [6802623]     Ответить | Цитировать Сообщить модератору
 Re: даты укладывающиеся в интервал  [new]
даты
Guest
ну, спасибо вам большое, а Elic жжет
10 фев 09, 16:57    [6802666]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить