2011-09-16 139 views
1

我有一個查詢,我通過以下SQL查詢計算兩天之間的總天數,包括開始和結束日期。如果結束日期不爲空,則結束日期被視爲當前日期。工作日計算

該查詢完成這項工作。但我不想指望星期六和星期天。可能的公共假期英國(我可以做這個,如果我能得到的邏輯週六,週日)

SELECT DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate()))numberOfDays 
     FROM <mytable> 

如何只計算兩個日期之間的工作日?

謝謝

+0

可能重複(http://stackoverflow.com/questions/252519/count-work-days-between-two- date-in-t-sql) –

回答

1

嘗試[計數工作日內兩個日期之間的T-SQL]此

SELECT DateDiff(day,DateADD(day,-1,StartDate),ISNULL(EndDate,getDate())) - 
(CASE WHEN DATENAME(dw, StartDate) = 'Sunday' OR 
DATENAME(dw,ISNULL(EndDate,getDate())) = 'Sunday' THEN 1 ELSE 0 END) 
- (CASE WHEN DATENAME(dw, StartDate) = 'Saturday' OR 
    DATENAME(dw,ISNULL(EndDate,getDate())) = 'Saturday' THEN 1 ELSE 0 END) 
numberOfDays   
FROM <mytable> 
+1

這是怎麼處理假期? –

2

看看在DATEDIFF MSDN page。 在頁面的底部,有一些用戶生成的內容。
一位用戶在那裏發佈了一個功能,它完全符合你的要求,包括假期(標題:「UDF返回營業日數,包括銀行假期表的支票)」。