PgSQL——判断日期为周末时,返回其它日期

本文介绍了一个用于页面展示的SQL函数,根据日期判断策略,确保在周六和周日提供前一天的正确数据,历史时间则直接返回前一天。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:页面展示数据时出现了问题,周五的数据只能周一传过来,其它时间都是第二天传过来,那么页面不能全部展示前一天的数据

解决:对传来的参数做判断,如果是周六周日的话,则返回周四,其它时间正常返回前一天;当然,对于历史时间的话,直接返回前一天时间即可

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前方一片光明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值