CREATE OR REPLACE FUNCTION "xxx"."f_timedelay"("starttime" timestamp, "endtime" timestamp)
RETURNS "pg_catalog"."numeric" AS $BODY$
DECLARE
v_return numeric;--返回间隔天数
v_counter numeric;
v_weekend numeric;--周一_周日 1_6_0
BEGIN
--计算时间间隔天数
select date_part('day',age(endtime,starttime)) into v_return;
--减去周末
v_counter := v_return;
while v_counter > 0 loop
--判断该日期为周几
v_weekend:=EXTRACT(DOW FROM (endtime - (v_counter ||' day')::INTERVAL));
if v_weekend = 6 or v_weekend = 0 then
v_return := v_return- 1;
end if;
v_counter:= v_counter-1;
end loop;
RETURN v_return;
EXCEPTION
WHEN OTHERS THEN
RETURN SQLERRM;
END$BODY$
LANGUAGE plpgsql VOLATILE
COST 100
PostgreSQL计算时间段间隔天数(排除周末)
最新推荐文章于 2024-03-14 16:52:31 发布