Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для подсчета рабочих дней (без выходных и праздников) / 5 сообщений из 5, страница 1 из 1
13.02.2020, 19:23
    #39926407
Ksana666
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для подсчета рабочих дней (без выходных и праздников)
Всем здравствуйте.

Внезапно возникла необходимость написать функцию в оракле, оказалось что от обычного sql сильно отличается.
Коллеги "посоветовали" использовать курсор или коллекцию, т.к. про курсоры инфы больше, остановилась на них.

Из исходных данных имеются только дата начала, дата окончания и календарь с праздниками.

Сам курсор

....
cursor publicholiday
is
select trunc(holiday) --праздники
from calendar
where holiday between date_start and date_end --ищу праздники в конкретном промежутке

v_test publicholiday%rowtype;

begin

open publicholiday;
LOOP
exit then publicholiday%notfound;
END LOOP;
close publicholiday;
fetch publicholiday into v_test;

--теперь нужно посчитать количество выходных\праздников чтобы потом вычестеть из разницы date_end-date_start

while date_start <=date_end LOOP
if to_char(date_start, 'd') in (6,7) --определяю выходные
then
hday:=1;
else hday:=0;
end if;
....
не понятно что с курсором то дальше делать:(
вариант просто считать количество праздников в calendar не подходит, нужно именно сверять дни.
Заранее спасибо.
...
Рейтинг: 0 / 0
13.02.2020, 20:04
    #39926427
SQL*Plus
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для подсчета рабочих дней (без выходных и праздников)
Ksana666
Всем здравствуйте.

Внезапно возникла необходимость написать функцию в оракле, оказалось что от обычного sql сильно отличается.
Коллеги "посоветовали" использовать курсор или коллекцию, т.к. про курсоры инфы больше, остановилась на них.

Из исходных данных имеются только дата начала, дата окончания и календарь с праздниками.

Сам курсор
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
....
cursor publicholiday
is
select trunc(holiday) --праздники
from calendar
where holiday between date_start and date_end --ищу праздники в конкретном промежутке

v_test publicholiday%rowtype;

begin

open publicholiday;
  LOOP
   exit then publicholiday%notfound;
  END LOOP;
close publicholiday;
fetch publicholiday into v_test;

--теперь нужно посчитать количество выходных\праздников чтобы потом вычистить из разницы date_end-date_start
 while date_start <=date_end LOOP
if to_char(date_start, 'd') in (6,7) --определяю выходные
then
    hday:=1;
else hday:=0;
end if;
....


не понятно что с курсором то дальше делать:(
вариант просто считать количество праздников в calendar не подходит, нужно именно сверять дни.
Заранее спасибо.
Для оформления кода на данном форуме используйте, пожалуйста, тег SRC.
...
Рейтинг: 0 / 0
13.02.2020, 21:28
    #39926453
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для подсчета рабочих дней (без выходных и праздников)
Ksana666
оказалось что от обычного sql сильно отличается.
И ты полагало, что достаточно не знать что-то одно, чтобы остальное "оказалось" знанием?
...
Рейтинг: 0 / 0
13.02.2020, 21:35
    #39926456
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для подсчета рабочих дней (без выходных и праздников)
Ksana666
Из исходных данных имеются только дата начала, дата окончания и календарь с праздниками
...
не понятно что с курсором то дальше делать:(
вариант просто считать количество праздников в calendar не подходит, нужно именно сверять дни.

Осталось разъяснить уважаемому собранию, что, собственно, от "Функции для подсчета рабочих дней" требуется и зачем надо "именно сверять дни" - из Вашего описания лично мне это совсем не очевидно.
...
Рейтинг: 0 / 0
14.02.2020, 09:55
    #39926564
Stax
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Функция для подсчета рабочих дней (без выходных и праздников)
Ksana666,

cубботы бывают рабочими

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


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