计算2个日期之间的小时数,只算工作日,排除周末
function get_hours(p_date1 date, p_date2 date) return number isl_return NUMBER;l_date1date;l_date2date;l_days NUMBER; --天数l_week_days NUMBER :=0; --周末天数begin--开始时间小于8点if p_date1 < trunc(p_date1) +
·
function get_hours(p_date1 date, p_date2 date) return number is
l_return NUMBER;
l_date1 date;
l_date2 date;
l_days NUMBER; --天数
l_week_days NUMBER :=0; --周末天数
begin
--开始时间小于8点
if p_date1 < trunc(p_date1) + 1 / 3 then
l_date1 := trunc(p_date1) + 1 / 3;
--开始时间大于17点
elsif p_date1 > trunc(p_date1) + 17 / 24 then
l_date1 := trunc(p_date1) + 4 / 3;
else
l_date1 := p_date1;
end if;
--当天的
if p_date2 <= l_date1 then
l_return := round((p_date2 - p_date1) * 24, 2);
--没有超过一天
elsif p_date2 - l_date1 < 1 then
l_return := round((p_date2 - l_date1) * 24, 2);
--超过一天
else
l_days := trunc( p_date2 - l_date1);
for i in 1.. l_days loop
if to_char(p_date2-i,'d') in ('1','7') then
l_week_days := l_week_days +1;
end if;
end loop;
l_return := round((floor(p_date2 - l_date1)-l_week_days) * 8 +
(p_date2 - (l_date1 + floor(p_date2 - l_date1))) * 24,
2);
end if;
return l_return;
EXCEPTION
WHEN OTHERS THEN
return 0;
end;
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)