Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос / 10 сообщений из 10, страница 1 из 1
23.06.2016, 16:02:26
    #39261120
SerX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Добрый день всем.
Помогите вывести запрос, результатом которого будут даты рабочих дней начиная с текущей даты. ((т.е. кроме сб. и вс., и еще следует ограничится 14 строками в результате - типа запись на прием к врачу в рабочие дни). Если такое возможно.
Спасибо.
...
Рейтинг: 0 / 0
23.06.2016, 16:09:40
    #39261131
ARlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
SerX, как то так можно

Код: plsql
1.
2.
3.
4.
select trunc(sysdate) + level - 1 dats
	from dual
 where to_char(trunc(sysdate) + level - 1, 'd') not in (6, 7)
connect by rownum <= 14
...
Рейтинг: 0 / 0
23.06.2016, 16:13:20
    #39261135
Запрос
...
Рейтинг: 0 / 0
23.06.2016, 16:24:30
    #39261148
kaldorey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
а праздничные дни учитывать не надо?
...
Рейтинг: 0 / 0
23.06.2016, 17:09:47
    #39261207
SerX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
ARlexSerX, как то так можно

Код: plsql
1.
2.
3.
4.
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, попадание в десятку. Спасибо. Но вот подправили с исключением еще и праздничных дней.
...
Рейтинг: 0 / 0
23.06.2016, 17:31:08
    #39261231
--Eugene--
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
ARlexSerX, как то так можно
Код: plsql
1.
2.
3.
4.
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.
...
Рейтинг: 0 / 0
24.06.2016, 08:01:15
    #39261494
ARlex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
для учета nls:
to_char(l_date, 'dy', 'nls_date_language=american') not in ('sat','sun')

для учета праздничных дней - заводи календарь с этими датами и проверяй в нем наличие
...
Рейтинг: 0 / 0
24.06.2016, 10:17:32
    #39261585
SerX
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
Благодарю.
...
Рейтинг: 0 / 0
24.06.2016, 10:25:11
    #39261589
andreymx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
ARlexдля учета nls:
to_char(l_date, 'dy', 'nls_date_language=american') not in ('sat','sun')

для учета праздничных дней - заводи календарь с этими датами и проверяй в нем наличиевообще-то все нормальные календари содержат все дни - рабочие, выходные, праздничные, предпраздничные (на час короче), и по видам профессий
...
Рейтинг: 0 / 0
24.06.2016, 10:53:20
    #39261605
alexk123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос
простая проверка на субботу и воскресенье не сработает в реальной жизни.

Популярны переносы рабочих дней на выходные,а выходных на рабочие в случае каких либо праздников. Типа "суббота" переносится на "понедельник".
Так что нужен справочник выходных и праздничных дней и правил переноса на каждый год (правила устанавливаются правительством перед началом года). А дальше процедурой рассчитывается реальный календарь рабочих дней.
Плюс бывают внеплановые события - типа трауров и объявления нерабочими днями. Также если это федеральная сеть, но надо учитывать что есть региональные праздничные дни - типа выходной в Башкирии по случаю сабантуя :)
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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