2011-09-16 191 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返回营业日数,包括银行假期表的支票)”。