要求只计算 8-12,14-18,我现在 csdn 找见有人探讨写的算法,结果仔细一侧,有些临界的地方就算不对了,比如 17:50 到第二天 8:10,算出来不是 20 分钟,好复杂啊,就只用 oracle 的话到底怎么能写对?
create or replace function wk_minutes_between(
i_startTime varchar2, -- 起始时间:( 格式:'YYYY-MM-DD HH24:MI:SS' )
i_endTime varchar2 -- 结束时间:( 格式:'YYYY-MM-DD HH24:MI:SS' )
)
return number
is
v_real_startTime date;
v_real_endTime date;
v_hours number(18,0);
v_number number(18,4);
begin
v_real_startTime := to_date(i_startTime,'YYYY-MM-DD HH24:MI:SS');
v_real_endTime := to_date(i_endTime,'YYYY-MM-DD HH24:MI:SS');
if v_real_startTime > v_real_endTime -- 如果起始时间大于结束时间,将起始时间与结束时间替换
then
select v_real_startTime, v_real_endTime into v_real_endTime, v_real_startTime f