如何从工作日计算中排除银行假日?
How to exclude bank holidays from working days calculation?
我已经能够显示不包括工作日的工作日。
但现在我需要知道如何排除银行假日。请帮忙?
这是我当前的代码:
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2016/01/01'
SET @EndDate = '2017/01/01'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) + 1)
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
DECLARE @TotalDays INT,@WorkDays INT
SET @TotalDays = (DATEDIFF(dd, @StartDate, @EndDate) +1)
print @TotalDays
试试这个,我认为它应该有效
SELECT COUNT(1)
FROM bankholidays
WHERE (@Region = 1 and Column1 BETWEEN @StartDate AND @EndDate)
or (@Region = 2 and Column2 BETWEEN @StartDate AND @EndDate
or (@Region not in (1,2) and Column3 BETWEEN @StartDate AND @EndDate
我已经能够显示不包括工作日的工作日。 但现在我需要知道如何排除银行假日。请帮忙?
这是我当前的代码:
DECLARE @StartDate DATETIME
DECLARE @EndDate DATETIME
SET @StartDate = '2016/01/01'
SET @EndDate = '2017/01/01'
SELECT
(DATEDIFF(dd, @StartDate, @EndDate) + 1)
-(DATEDIFF(wk, @StartDate, @EndDate) * 2)
-(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
DECLARE @TotalDays INT,@WorkDays INT
SET @TotalDays = (DATEDIFF(dd, @StartDate, @EndDate) +1)
print @TotalDays
试试这个,我认为它应该有效
SELECT COUNT(1)
FROM bankholidays
WHERE (@Region = 1 and Column1 BETWEEN @StartDate AND @EndDate)
or (@Region = 2 and Column2 BETWEEN @StartDate AND @EndDate
or (@Region not in (1,2) and Column3 BETWEEN @StartDate AND @EndDate