Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Расчет количества выходных дней в произвольном периоде (число прочтений - 3089 )
grayrat
Junior Member
**
Отсутствует



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Расчет количества выходных дней в произвольном периоде
27. Июля 2009 :: 12:08
Печать  
Коллеги!
Как кто считает в запросах количество рабочих/выходных дней в периоде с Дата1 по Дата2, поделитесь!

В принципе, задачу можно свести к вопросу получения количества выходных дней в периоде длиной 1-6 дней, начиная с Дата1 - как это можно сделать так, чтобы удобно было использовать в прямых запросах?

Учет праздников/рабочих суббот и воскресений пока не интересует.
  
Наверх
 
IP записан
 
grayrat
Junior Member
**
Отсутствует



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Расчет количества выходных дней в произвольном периоде
Ответ #1 - 27. Июля 2009 :: 14:42
Печать  
Хм. Нашел как за весь период считать:

Код
Выбрать все
select
datediff(wk, DATEADD(day, -7,:Дата1), DATEADD(day, -6,:Дата2)) СБ,
datediff(wk, DATEADD(day, -8,:Дата1), DATEADD(day, -7,:Дата2)) ВС
 

  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Расчет количества выходных дней в произвольном периоде
Ответ #2 - 27. Июля 2009 :: 15:45
Печать  
только надо еще учитывать с какого дня (воскресенье или понедельник ) начинается  неделя.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Расчет количества выходных дней в произвольном периоде
Ответ #3 - 27. Июля 2009 :: 16:13
Печать  
Z1, тоже так подумал, и даже проверил - нифига считает правильно в любом случае Смех
Код
Выбрать все
set datefirst 7
GO
select
datediff(wk, DATEADD(day, -7,'20000101'), DATEADD(day, -6,'20081231')) СБ,
datediff(wk, DATEADD(day, -8,'20000101'), DATEADD(day, -7,'20081231')) ВС

set datefirst 1
GO
select
datediff(wk, DATEADD(day, -7,'20000101'), DATEADD(day, -6,'20081231')) СБ,
datediff(wk, DATEADD(day, -8,'20000101'), DATEADD(day, -7,'20081231')) ВС
СБ          ВС          
----------- -----------
470         470

(1 row(s) affected)

СБ          ВС          
----------- -----------
470         470

(1 row(s) affected) 


как так получается чет не въезжаю даже Очень довольный
зы: использую календари в 1С(таблицу CL)
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Расчет количества выходных дней в произвольном периоде
Ответ #4 - 27. Июля 2009 :: 16:31
Печать  
неправильно считаешь напиши весь текст в Хp ( и без go )
а так после go у тебя все настройки востанавливаются.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Расчет количества выходных дней в произвольном периоде
Ответ #5 - 27. Июля 2009 :: 16:45
Печать  
да ну здрасти
Код
Выбрать все
set datefirst 7
GO
select
datediff(wk, DATEADD(day, -7,'20000101'), DATEADD(day, -6,'20081231')) СБ,
datediff(wk, DATEADD(day, -8,'20000101'), DATEADD(day, -7,'20081231')) ВС,
@@datefirst datefirst

set datefirst 1
GO
select
datediff(wk, DATEADD(day, -7,'20000101'), DATEADD(day, -6,'20081231')) СБ,
datediff(wk, DATEADD(day, -8,'20000101'), DATEADD(day, -7,'20081231')) ВС,
@@datefirst datefirst
СБ          ВС          datefirst
----------- ----------- ---------
470         470         7

(1 row(s) affected)

СБ          ВС          datefirst
----------- ----------- ---------
470         470         1

(1 row(s) affected)
 

  
Наверх
 
IP записан
 
grayrat
Junior Member
**
Отсутствует



Сообщений: 99
Местоположение: Russia, Moscow
Зарегистрирован: 20. Мая 2006
Пол: Мужской
Re: Расчет количества выходных дней в произвольном периоде
Ответ #6 - 27. Июля 2009 :: 17:44
Печать  
Я тоже вначале не въехал, почему работает, сейчас вроде начинаю въезжать - но объяснить пока не могу Улыбка

Но, согласитесь, изящненько. Хорошо, что есть инет.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Расчет количества выходных дней в произвольном периоде
Ответ #7 - 28. Июля 2009 :: 03:27
Печать  
grayrat писал(а) 27. Июля 2009 :: 17:44:
Я тоже вначале не въехал, почему работает, сейчас вроде начинаю въезжать - но объяснить пока не могу Улыбка

Получается разница дней не зависит от того откуда ведем отсчет
начала недели от воскресенья или от понедельника.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать