Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Запрос  [new]
SerX
Member

Откуда:
Сообщений: 77
Добрый день всем.
Помогите вывести запрос, результатом которого будут даты рабочих дней начиная с текущей даты. ((т.е. кроме сб. и вс., и еще следует ограничится 14 строками в результате - типа запись на прием к врачу в рабочие дни). Если такое возможно.
Спасибо.
23 июн 16, 16:02    [19326903]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
ARlex
Member

Откуда:
Сообщений: 21
SerX, как то так можно

select trunc(sysdate) + level - 1 dats
	from dual
 where to_char(trunc(sysdate) + level - 1, 'd') not in (6, 7)
connect by rownum <= 14
23 июн 16, 16:09    [19326942]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
Поискрулит
Guest
тынц
тынцт и т.д.
23 июн 16, 16:13    [19326958]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
kaldorey
Member

Откуда:
Сообщений: 600
а праздничные дни учитывать не надо?
23 июн 16, 16:24    [19327026]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
SerX
Member

Откуда:
Сообщений: 77
ARlex
SerX, как то так можно

select trunc(sysdate) + level - 1 dats
	from dual
 where to_char(trunc(sysdate) + level - 1, 'd') not in (6, 7)
connect by rownum <= 14


ARlex, попадание в десятку. Спасибо. Но вот подправили с исключением еще и праздничных дней.
23 июн 16, 17:09    [19327239]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
--Eugene--
Member

Откуда: Боярышник
Сообщений: 2170
ARlex
SerX, как то так можно
select trunc(sysdate) + level - 1 dats
	from dual
 where to_char(trunc(sysdate) + level - 1, 'd') not in (6, 7)
connect by rownum <= 14
to_char(x, 'd') или to_char(x, 'day') - depend on the NLS territory of the session.
Как любезно подсказал Elic, правильнее было бы использовать "IW" - Calendar week of year (1-52 or 1-53), as defined by the ISO 8601 standard.
23 июн 16, 17:31    [19327347]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
ARlex
Member

Откуда:
Сообщений: 21
для учета nls:
to_char(l_date, 'dy', 'nls_date_language=american') not in ('sat','sun')

для учета праздничных дней - заводи календарь с этими датами и проверяй в нем наличие
24 июн 16, 08:01    [19329126]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
SerX
Member

Откуда:
Сообщений: 77
Благодарю.
24 июн 16, 10:17    [19329803]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 54382
ARlex
для учета nls:
to_char(l_date, 'dy', 'nls_date_language=american') not in ('sat','sun')

для учета праздничных дней - заводи календарь с этими датами и проверяй в нем наличие
вообще-то все нормальные календари содержат все дни - рабочие, выходные, праздничные, предпраздничные (на час короче), и по видам профессий
24 июн 16, 10:25    [19329849]     Ответить | Цитировать Сообщить модератору
 Re: Запрос  [new]
alexk123
Member

Откуда:
Сообщений: 33
простая проверка на субботу и воскресенье не сработает в реальной жизни.

Популярны переносы рабочих дней на выходные,а выходных на рабочие в случае каких либо праздников. Типа "суббота" переносится на "понедельник".
Так что нужен справочник выходных и праздничных дней и правил переноса на каждый год (правила устанавливаются правительством перед началом года). А дальше процедурой рассчитывается реальный календарь рабочих дней.
Плюс бывают внеплановые события - типа трауров и объявления нерабочими днями. Также если это федеральная сеть, но надо учитывать что есть региональные праздничные дни - типа выходной в Башкирии по случаю сабантуя :)
24 июн 16, 10:53    [19330066]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить