2014-12-30 2 views
0

다음 날짜를 계산하는 데 아래를 사용하고 있지만 작업하지 않은 날을 반환 할 수 있습니다. 예를 last_service를 들어dateadd를 사용하면 작업 일이 반환됩니다.

dateadd(day, 365, nullif(last_service, '01/01/1900')) as [next_service] 

07.03.2014은 다음 next_service는 토요일 07.03.2015이 될 것입니다.

이렇게 피하는 방법은 근무일 만 반환됩니까?

감사의 말과 도움에 감사드립니다.

+0

그래서이 예에서는 결과가 무엇이되어야합니다. –

+1

작업 환경의 작업 일로 달력 표를 작성하는 것으로 시작하십시오. –

+0

다음 영업일을 반환하고 싶습니다. – user3452212

답변

6

캘린더 테이블을 만드는 것이 좋습니다. 다음 휴일은 다양한 휴일 및 기타 정책으로 인해 모든 사람들이 동일하지는 않습니다. 캘린더 테이블에 가입하는 것이 빠르고 쉽습니다.

http://www.sqlservercentral.com/blogs/dwainsql/2014/03/30/calendar-tables-in-t-sql/

사용은 다를 수 :이 일정 테이블을 만들 수 있도록 많은 자원이 여기 하나입니다

:

SELECT a.*,b.NextBusinessDay AS next_service 
FROM YourTable a 
JOIN tlkp_Calendar b 
ON DATEADD(year,1,a.last_service) = b.CalendarDate 

또는 당신은 당신의 달력 테이블에 여분 년을 굽는 경우

SELECT a.*,b.Next_Service 
FROM YourTable a 
JOIN tlkp_Calendar b 
ON a.last_service = b.CalendarDate 
+0

달력을 사용할 때 여전히 같은 날짜를 반환합니다. – user3452212

+0

@ user3452212이 작업을 수행하려면 다음 영업일 또는 다음 서비스 날짜를 달력 테이블에 작성해야하지만, 두 쿼리 모두에서 선택한 필드의 날짜가 달라야합니다. –

관련 문제