=24(IF(WEEKDAY(A1,2)<=5,IF(AND(MOD(A1,1)>=95/24,MOD(A1,1)<=185/24),IF(MOD(A1,1)<=05,05-MOD(A1,1)+55/24,IF(MOD(A1,1)<=13/24,55/24,185/24-MOD(A1,1))),0),0))+24(IF(WEEKDAY(B1,2)<=5,IF(MOD(B1,1)<=185/24,IF(MOD(B1,1)<=13/24,IF(MOD(B1,1)<=05,IF(MOD(B1,1)<95/24,0,MOD(B1,1)-95/24),25/24),MOD(B1,1)-13/24+25/24),8/24),0))+(NETWORKDAYS(A1,B1)-SUMPRODUCT((WEEKDAY(A1:B1,2)<=5)1))8
三段:
1、开始当天工时
2、结束当天工时
3、结束日期和开始日期之间的工作日工时先创建一个函数计算时间差
Alter function dbofn_test(@begin datetime,@end datetime)
returns int
As
BEGIN
declare @i int,@j int
set @i=0
set @j=0
if @end<@begin
begin
declare @t datetime
set @t=@end
set @end=@begin
set @begin=@t
end
while dateadd(hh,@i,@begin) <@end
begin
if datepart(weekday,dateadd(hh,@i,@begin)) not in(1,7)
set @j=@j+1
set @i=@i+1
end
return @j
end
调用函数
select dbofn_test(@begin,@end)假设开始时间在a列,结束时间在b列,时间差在c列,
从c2开始的公式=text(time(left(b2,2),right(b2,2),0)-time(left(a2,2),right(a2,2),0),"h:m")
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)