2013-07-02 3 views
0

Мне нужно написать простой запрос, который возвращает три рабочих дня до заданной даты. Я не хочу создавать таблицу календаря. Есть ли алгоритм, который использует dateadd() и datepart(), которые я могу использовать для получения этого результата?Использование алгоритма SQL DateAdd, за исключением выходных дней

ответ

0

Я в конечном итоге, используя время цикла для подсчета количества дней недели.

я держать на велосипеде назад один день в то время, пока я не получить нужное количество дней недели, используя этот будний логику:

set @isweekday=case when (DATEPART(dw, @tempdate) + @@DATEFIRST) % 7 NOT IN (0, 1) then 1 else 0 end 
0

Это то, что я использовал до того, как шаблон, который я нашел очень полезным:

DECLARE @DateOld datetime, @DateNew datetimeSET @DateOld = '10-Sep-2005'SET @DateNew = GETDATE() 
SET DATEFIRST 1 
SELECT DATEDIFF (day, @DateOld, @DateNew) - (2 * DATEDIFF(week, @DateOld, @DateNew)) - CASE WHEN DATEPART(weekday, @DateOld + @@DATEFIRST) = 1 THEN 1 ELSE 0 END - CASE WHEN DATEPART(weekday, @DateNew + @@DATEFIRST) = 1 THEN 1 ELSE 0 END 

Источник: http://sqlcode.blogspot.com/2007/07/calculate-number-of-business-days.html

 Смежные вопросы

  • Нет связанных вопросов^_^