먼저 활성 플래그를 수정하려면 나는 STARTDATE와 종료 날짜 사이의 날짜의 일련의 생성했지만, 그것은 요일을 반환
SELECT DATEPART(weekday, DATEADD(DAY, nbr - 1, @StartDate)) as dow
FROM (SELECT ROW_NUMBER() OVER (ORDER BY c.object_id) AS Nbr
FROM sys.columns c
)nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)
그런 다음 당신이 사용할 수있는 간단한 WHERE IN()을 사용하여 포함 할 요일을 선택하고 반환 된 요일을 계산합니다. SQL 서버의 주 전나무 일의
DECLARE @StartDate DATE = '20170101'
, @EndDate DATE = '20170131'
SELECT COUNT(*) AS DAYS
FROM (
SELECT DATEPART(weekday, DATEADD(DAY, nbr - 1, @StartDate)) as dow
FROM (SELECT ROW_NUMBER() OVER (ORDER BY c.object_id) AS Nbr
FROM sys.columns c
)nbrs
WHERE nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)
) T1
WHERE DOW IN (3,4,5);
테이크 관리, 당신은 SET DATEFIRST로 변경할 수 있습니다.
여기를 확인하십시오 : http://rextester.com/WCLIXM28868
근무일을 의미합니까? – McNets
@McNets 잘, 일이지만, 평일뿐만 아니라, 일요일부터 금요일까지 월요일에서 화요일까지 가능할 수 있습니다 ... 그것은 많이 다릅니다. 그러나 각 쿼리에서 근무일로 필요한 일을 정의 할 수있는 방법이 있다면, 다음과 같이 할 수 있습니다. 그것과 함께 작동 – rhernandez
당신은 조회 달력 테이블이 있습니까? – McNets