SQL语句计算两个日期之间有多少个工作日

EXCEL如何自动计算两个日期之间的工作日数的解决方法如下: 1 、可以使用公式:=NETWORKDAYS(a1 ,b1 ,"2 01 2 -5 -1 "), 2 、必须手动插入节假日, 3 、NETWORKDAYS函数只有在安装了分析工具箱后才能使用。

SQL语句计算两个日期之间有多少个工作日的方法

/*由于工作中的一个奇怪的需求,我需要使用SQL来计算两个日期之间的工作日数。
原则是每周有5 个工作日,周一至周五。
说明:第一周工作日数:DATEPART(dw,@begdt)-DATEPART(dw,@begdt),最近一周最小工作日数为0天:DATEPART(dw,@enddt),计算方式最多为5 天方法:如果两个日期在同一周,则直接计算“第一周工作日数”;否则,按照以下公式计算(两个日期之间的总天数 - 第一周天数 - 最后一周天数)/7 *5 + 第一周工作日数 + 最后一周工作日数 */-- 计算并返回两个日期之间的工作时数(工作日*8 ) 周一到周五计算 - 必须先SETDATEFIRST1 CREATEFUNCTIONdbo.CalcWorkHours(@bdateDATETIME,@edateDATETIME)RETURNSINTEGERASBEGINDECL ARE@hoursINTEGERIF@@DATEFIRST<>1 OR@bdate>@edateRETURN-1 SELECT@hours=--如果结束日期和开始日期在同一周,则只需计算天数 CASEWHENDATEPART(wk, @edate-1 )-DATEPART(wk,@bdate)=0THENCASEWHENDATEPART(dw,@bdate)>5 THEN0WHENDATEPART(dw,@edate-1 )>5 THEN6 -DATEPART(dw,@bda te)ELSEDATEPART(dw,@edate-1 )-DATEPART(dw,@bdate)+1 END--如果结束日期和开始日期是在不同的周内 - 首先计算完整的周数,除了前后两周 *5 ELSE(DATEDIFF(dd,@bdate ,@edate)-(8 -DATEPART(dw,@bdate))-DATEPART(dw,@edate-1 ))/7 *5 --加上第一周的工作日数+CASEWHENDATEPART(dw,@bdate)<6>5 THEN5 ELSEDATEPART(dw,@edate-1 )ENDEND*8 RETURN@hoursEND