powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Снова вопрос с датами
6 сообщений из 6, страница 1 из 1
Снова вопрос с датами
    #39390031
maxwait
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Вчера задавал вопрос по поводу дат
сегодня продолжу эту тему.

--Query1--
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
select c.Id 
       , trunc(p.Date_Begin) as Date_Begin
       , trunc(p.Date_End) as Date_End
       , trunc(p.Date_End) - trunc(p.Date_begin) as CountDate
       , MONTHS_BETWEEN(trunc(p.Date_End), trunc(p.Date_begin)) as CountMonth
from tabl1 c
     join tabl2 p on p.Contract_Id = c.id
where ( p.Date_begin <= '01.01.2017' and (p.Date_END > '01.01.2017' or c.date_close is null)  )
      and c.id = 6315;



Результат запроса
Код: plaintext
1.
         v_date           v_date_out  CountDate     CountMonth
6315	 26.12.2016     26.06.2017	182	          6  

--Query2--
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
declare
  v_date date := '26.12.2016';
  v_date_out date := '26.06.2017';
  v_date_result date ;
  p1 NUMBER :=-1;
  p2 NUMBER :=5; (CountMonth-1)
begin
  WHILE (p1 < p2)
    LOOP
       p1 := p1+1;          

      select case when (ADD_MONTHS(Pkg.Get_Date,p1)) < v_date_out
             then (ADD_MONTHS(D3_Pkg.Get_Date,p1))
               else v_date_out end
      into v_date_result        
        from dual;
      dbms_output.put_line(v_date_result);  
    END LOOP;
end;    



Код: plaintext
1.
2.
3.
4.
5.
6.
Результат
31.01.17
28.02.17
31.03.17
28.04.17
31.05.17
26.06.17

необходимо получить вот такой результат

Код: plaintext
1.
2.
3.
4.
5.
6.
        v_date           v_date_out  CountDate     CountMonth   Послед. раб. день мес.
	26.12.2016	    26.06.2017	182	          6                31.01.17                                                                     
	26.12.2016	    26.06.2017	182	          6                28.02.17
	26.12.2016	    26.06.2017	182	          6                31.03.17
	26.12.2016	    26.06.2017	182	          6                28.04.17
	26.12.2016	    26.06.2017	182	          6                31.05.17
	26.12.2016	    26.06.2017	182	          6                26.06.17

Можно ли не создавая функции из --Query2-- получить необходимы результат
или же создание функции в моем случае является хорошим тоном?
Заранее спасибо!
...
Рейтинг: 0 / 0
Снова вопрос с датами
    #39390057
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait
Код: plsql
1.
p1 := p1+1;

а почему не
Код: plsql
1.
select p1 + 1 into p1 from dual;

?
...
Рейтинг: 0 / 0
Снова вопрос с датами
    #39390069
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxwait,

есть много способов генерации "последовательностей"
SY как-то дож сравнивал их

один из
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
  1  with t as (
  2  select date '2017-06-26' date_out from dual)
  3  select least(last_day(add_months(trunc(date_out,'y'),n)),date_out) ddd from t,
  4* xmltable('0 to xs:integer($M)' passing to_char(date_out,'mm')-1 as m columns n number path '.' )
SQL> /

DDD
--------
31.01.17
28.02.17
31.03.17
30.04.17
31.05.17
26.06.17

6 rows selected.



........
stax
...
Рейтинг: 0 / 0
Снова вопрос с датами
    #39390421
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..есть много способов генерации "последовательностей"Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
...
Рейтинг: 0 / 0
Снова вопрос с датами
    #39390444
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopstax..есть много способов генерации "последовательностей"Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
была темка, типа сгенерить 1млн значений (зачем другой вопрос), наскоко помню, connect by проигрывал

зы
имхо
connect by тяжелая операция стараюсь не использовать (есть табличка с гарантированным к-вом строк)

.....
stax
...
Рейтинг: 0 / 0
Снова вопрос с датами
    #39390452
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
stax..dbms_photoshopпропущено...
Но если при генерации не надо учитывать значения того, что уже сгенерировано, то ничего лучше connect by еще не придумали.
была темка, типа сгенерить 1млн значений (зачем другой вопрос), наскоко помню, connect by проигрывал

зы
имхо
connect by тяжелая операция стараюсь не использовать (есть табличка с гарантированным к-вом строк)

.....
staxПодобное сообщение не несет никакой информационной нагрузки.
Хотя, признаю, что я тоже никаких доказательств не предоставил.
Вопрос для меня давно закрыт и нет желания снова ковырять.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Снова вопрос с датами
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]