POSTGRESQL - 以不同的时间调用函数作为输入参数

时间:2016-12-16 04:04:45

标签: postgresql postgresql-9.3

我试图调用我创建的函数来获取特定时隙的某些数据。下面给出了我的函数脚本:

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')

即使我尝试将输入参数更改为“字符变化”并将输入内部转换为时间戳,即使它不起作用。

1 个答案:

答案 0 :(得分:1)

解释很明显,不是吗?

来自mytable的所有匹配行的"AlertTime"大于或等于2016-12-14 00:00:00且小于2016-12-14 00:00:01