PostgreSQL数据库datediff函数的创建

创建datediff函数

-- FUNCTION: datediff(timestamp with time zone, timestamp with time zone)

-- DROP FUNCTION IF EXISTS datediff(timestamp with time zone, timestamp with time zone);

CREATE OR REPLACE FUNCTION datediff(
	endtime timestamp with time zone,
	starttime timestamp with time zone)
    RETURNS numeric
    LANGUAGE 'plpgsql'
    COST 100
    VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_result   numeric;
begin        
 l_result=date_part('day',endTime-startTime);
--    l_result:=floor(endTime-startTime);        
    return   l_result;
end;
$BODY$;

ALTER FUNCTION datediff(timestamp with time zone, timestamp with time zone)
    OWNER TO postgres;
	
CREATE OR REPLACE FUNCTION datediff(
endtime timestamp with time zone,
starttime text)
RETURNS numeric
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_result   numeric;
begin        
 l_result=date_part('day',endTime-starttime::timestamp with time zone);
--    l_result:=floor(endTime-startTime);        
    return   l_result;
end;
$BODY$;

CREATE OR REPLACE FUNCTION datediff(
endtime text,
starttime timestamp with time zone)
RETURNS numeric
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_result   numeric;
begin        
 l_result=date_part('day',endTime::timestamp with time zone-starttime);
--    l_result:=floor(endTime-startTime);        
    return   l_result;
end;
$BODY$;

CREATE OR REPLACE FUNCTION datediff(
endtime text,
starttime text)
RETURNS numeric
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$
DECLARE
l_result   numeric;
begin        
 l_result=date_part('day',endTime::timestamp with time zone-starttime::timestamp with time zone);
--    l_result:=floor(endTime-startTime);        
    return   l_result;
end;
$BODY$;

测试

select * from t_rule;

select "id",datediff(,"updated_at","created_at") from t_rule;

select datediff('2023-10-07','2023-10-05');
select datediff('2023-10-07'::timestamp,'2023-10-05'::timestamp);
select datediff('2023-10-05'::timestamp,'2023-10-10'::timestamp);
select datediff('2023-10-05','2023-10-10'::timestamp);
select datediff('2023-10-07'::timestamp,'2023-10-05');

-- select datediff('month','2023-11-02','2022-09-01');

-- select date_part('month','2023-11-02'::timestamp with time zone-2022-09-01::timestamp with time zone);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值