DECLARE @bt DATETIME,@et DATETIME SELECT @bt='20090801',@et='20090913' ;WITH t AS ( SELECT DATEDIFF(dd,@bt,@et)+1 AS [days], DATEPART(w,@bt+@@DATEFIRST-1) AS [wd] --@@DATEFIRST-1 按周一为一周的第一天查询 ) SELECT [Workdays]=[days]/7*5+[days]%7 - CASE WHEN 6 BETWEEN [wd] AND [wd]+[days]%7-1 THEN 1 ELSE 0 END - CASE WHEN 7 BETWEEN [wd] AND [wd]+[days]%7-1 THEN 1 ELSE 0 END FROM t /* Workdays ----------- 30 */