powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Функция для подсчета рабочих дней (без выходных и праздников)
5 сообщений из 5, страница 1 из 1
Функция для подсчета рабочих дней (без выходных и праздников)
    #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
Функция для подсчета рабочих дней (без выходных и праздников)
    #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
Функция для подсчета рабочих дней (без выходных и праздников)
    #39926453
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksana666
оказалось что от обычного sql сильно отличается.
И ты полагало, что достаточно не знать что-то одно, чтобы остальное "оказалось" знанием?
...
Рейтинг: 0 / 0
Функция для подсчета рабочих дней (без выходных и праздников)
    #39926456
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ksana666
Из исходных данных имеются только дата начала, дата окончания и календарь с праздниками
...
не понятно что с курсором то дальше делать:(
вариант просто считать количество праздников в calendar не подходит, нужно именно сверять дни.

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

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

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


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