问题:页面展示数据时出现了问题,周五的数据只能周一传过来,其它时间都是第二天传过来,那么页面不能全部展示前一天的数据
解决:对传来的参数做判断,如果是周六周日的话,则返回周四,其它时间正常返回前一天;当然,对于历史时间的话,直接返回前一天时间即可
CREATE OR REPLACE FUNCTION "public"."get_date_or_thursday"("date_str" varchar)
RETURNS "pg_catalog"."varchar" AS $BODY$
DECLARE
result varchar;
date_num numeric;
BEGIN
--时间比较老的日期直接返回
IF DATE_PART('day', now() - date_str::timestamp) > 5
THEN RETURN date_str;
END IF;
-- 10点之前往前推一天
IF DATE_PART('hour', now()) < 10
THEN
date_str := to_char(date_str::timestamp + interval '- 1 day','YYYY-MM-DD');
END IF;
-- 周六日返回周四
date_num := extract('DOW' FROM cast(date_str as TIMESTAMP));
result := CASE date_num
WHEN 6 THEN to_char(date_str::timestamp + interval '- 2 day','YYYY-MM-DD')
WHEN 0 THEN to_char(date_str::timestamp + interval '- 3 day','YYYY-MM-DD')
ELSE date_str
END;
RETURN result;
END $BODY$
LANGUAGE plpgsql VOLATILE
COST 100