Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Таблица-календарь праздничных дней
|
|||
|---|---|---|---|
|
#18+
Коллеги, есть вопрос по организации хранения рабочих / выходных / праздничных дней для разных стран / контрагентов. Если модераторы считают, что вопрос больше относится к проектированию, пожалуйста, перенесите тему. Принято правило, что пн-пт являются рабочими днями, а сб и вс - выходными. Все исключения из этого правила раз в год заносятся в таблицу исключений для 2018 года Код: sql 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. include = 0 - не рабочий день include = 1 - рабочий день Теперь требуется обрабатывать графики работы для разных организаций. Например некоторые организации вполне могут работать 3, 4, 5 января, а у некоторых наоборот могут быт свои не рабочие дни (организации из других стран). Пока в голове только дополнительная таблица, в которой будут храниться: дата, идентификатор организации, и признак рабочий день или нет. Т.о. нужно будет проверять для конкретной организации, в порядке убывания приоритета, наличие записи в этой дополнительной таблице, потом в основной, потом стандартное правило. Поделитесь опытом / идеями, как лучше всего решить данную задачу. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 11:49 |
|
||
|
Таблица-календарь праздничных дней
|
|||
|---|---|---|---|
|
#18+
Guf, Делал аналогичную задачу. В отдельную таблицу занес по контрагентам все нерабочие дни, включая сб и вс, т.к. бывает что и выходные рабочие по всяким праздникам. Потом процедуру нарисовал отдачи календаря по каждому контрагенту. CREATE TABLE [dbo].[market_no_work_date]( [mkt_id] [dbo].[refer] NOT NULL, [no_work_date] [date] NOT NULL) Create proc [dbo].[get_market_work_day] ( @mkt_id refer ,@DateFrom date=null ,@DateTo date=null ) as Begin Select @DateFrom=isnull(@DateFrom,getdate()) Select @DateTo=isnull(@DateTo,getdate()) ;WITH L0 AS (SELECT 0 AS c UNION ALL SELECT 0), L1 AS (SELECT 0 AS c FROM L0 AS A CROSS JOIN L0 AS B), L2 AS (SELECT 0 AS c FROM L1 AS A CROSS JOIN L1 AS B), L3 AS (SELECT 0 AS c FROM L2 AS A CROSS JOIN L2 AS B), L4 AS (SELECT 0 AS c FROM L3 AS A CROSS JOIN L3 AS B), Nums AS (SELECT ROW_NUMBER() OVER(ORDER BY (SELECT 0)) AS n FROM L4) ,dates as (SELECT cast(dateadd(dd,n-1,@DateFrom) as date) d FROM Nums) ,dates_row as (Select ROW_NUMBER() OVER(PARTITION BY mnwd.no_work_date ORDER BY mnwd.no_work_date) AS RowN,d.d,mnwd.no_work_date From dates d left outer join market_no_work_date mnwd on d.d=mnwd.no_work_date and mnwd.mkt_id=@mkt_id) Select d,case when no_work_date is null then 1 else 0 end as work_day from dates_row Where d<=@DateTo End ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.05.2018, 12:13 |
|
||
|
Таблица-календарь праздничных дней
|
|||
|---|---|---|---|
|
#18+
Guf, 1. Вы удивитесь, но во многих странах выходные дни это пятница и суббота 2. Для этого придумали производственные календари 3. И да, на предприятии их может быть много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.05.2018, 10:58 |
|
||
|
Таблица-календарь праздничных дней
|
|||
|---|---|---|---|
|
#18+
iiyama, 1. Удивился. 2. Именно его я и хочу сделать. (т.е. уже делаю по описанному в стартовом посте способу) 3. Именно в том и заключается вопрос, как люди делают несколько производственных календарей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.05.2018, 06:48 |
|
||
|
|

start [/forum/topic.php?fid=46&gotonew=1&tid=1689677]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
6ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 301ms |

| 0 / 0 |
