我试图调用我创建的函数来获取特定时隙的某些数据。下面给出了我的函数脚本:
CREATE OR REPLACE FUNCTION my_function(
starttime timestamp with time zone,
endtime timestamp with time zone)
RETURNS TABLE("Deviceid" integer, "AlertTime" timestamp with time zone)
LANGUAGE 'plpgsql'
COST 100.0
AS $function$
DECLARE
r record;
BEGIN
SELECT "DeviceID" , "AlertTime" FROM my_table
WHERE "AlertTime" BETWEEN starttime AND endtime;
END;
$function$;
ALTER FUNCTION public.my_function(timestamp with time zone, timestamp with time zone)
OWNER TO postgres;
当我用时间'2016-12-15 00:00:01'到'2016-12-15 18:00:00'呼叫功能时,我没有得到任何记录。即使有很多可用于时隙的记录,我通过在函数内部传递查询的相同时间值来检查它,它正确地获取数据。
select * from my_function('2016-12-14 00:00:01','2016-12-15 18:00:00')
但是当我在2016-12-15 00:00:00'到'2016-12-15 18:00:00'呼叫功能时,我能够获得所有记录。
select * from my_function('2016-12-14 00:00:00','2016-12-15 18:00:00')
即使我尝试将输入参数更改为“字符变化”并将输入内部转换为时间戳,即使它不起作用。
答案 0 :(得分:1)
解释很明显,不是吗?
来自mytable
的所有匹配行的"AlertTime"
大于或等于2016-12-14 00:00:00
且小于2016-12-14 00:00:01
。