, 나는 그것을 시도하지 않을 것입니다. 너무나 많은 사람의 실수 (전사 오류 포함), 매우 길고, 디버깅이나 수정이 까다 롭습니다.
대신 이미 계산 된 데이터 집합을 반환해야한다면 T-SQL의 사용자 정의 함수로 사용합니다. 이 정보를 표시하거나 보고서를 작성하려고한다면 코드로 수행하는 것이 좋습니다. 그러나 사용자 정의 된 T-SQL 함수가 가장 유연한 솔루션이 될 것입니다.
아직 손을 쓸만한 것이 없으므로 알고리즘을 알려 드리겠습니다.
@ Date1과 @ Date2라는 두 개의 날짜 - 시간 값이 있다고 가정합니다. 우리는 @ Date1 < @ Date2라고 가정합니다. @ Date1과 @ Date2는 모두 근무일 및 근무 시간 내에 있다고 가정합니다.
@ Date1과 @ Date2가 같은 날짜 인 경우 @ Date1과 @ Date2의 차이를 초 단위로 반환하십시오.
@firstMorning을 @ Date1의 첫 9시 이후로 지정하십시오. @ Date1이 오전 9시에 있으면 @firstMorning = @ Date1입니다.
@lastMorning을 @firstMorning 다음 @ Date2 앞의 마지막 오전 9 시로 지정하십시오. (기본적으로 @ Date2의 시작 시간입니다.)
@workWeeks = @firstMorning과 @lastMorning 사이의 월요일 - 금요일 주 수로 둡니다.
Let @firstWeekDays = @firstMorning과 금요일 오전 9:00 사이의 일 수. @firstMorning = Friday 오전 9:00 일 경우 @firstWeekDays를 0으로 설정하십시오.
Let @lastWeekDays = 지난주 월요일의 오전 9시와 @lastMorning 사이의 일 수. @lastMorning = Monday 오전 9:00 일 경우 @lastWeekDays를 0으로 설정하십시오.
Let @SecondsPerDay = 8.5 * 3600.
반환 (@workWeeks * 5 * @SecondsPerDay) + (@firstWeekDays * @SecondsPerDay) + (@ 날짜 1에 @ 날짜 1 5:30 사이의 시간 (초)) + (@lastWeekDays * @SecondsPerDay) + (초 사이 @lastMorning 및 @ Date2)
이 논리는 코드로 테스트되지 않았 음을 유의하십시오. 코드가 있으면이 코드를 사용합니다. :)
근무 시간이 고정되어 있습니까? 변하지 않니? 그들은 계속되는가 (점심 시간 없음)? –
공휴일은 어떨까요? –
근무 시간은 고정되어 있으며이 경우 휴일을 무시합니다. 감사합니다! – FBeveridge