2016-12-16 75 views
0

我試圖調用我創建的函數來獲取特定時隙的某些數據。下面給出的是我的功能的腳本:POSTGRESQL - 不同時間的調用函數作爲輸入參數

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

你的功能是完全多餘的! – e4c5

+0

@ e4c5:請告訴我相關的更正 –

+0

你的函數只是將select的結果作爲表返回。當你可以做選擇的時候,爲什麼人們在這樣的事情上花費時間和精力? – e4c5

回答

1

解釋很明顯,不是嗎?

來自mytable的所有匹配行都具有大於或等於2016-12-14 00:00:00且小於2016-12-14 00:00:01"AlertTime"

+0

我通過在函數內傳遞查詢的相同時間值來檢查它,它正確地獲取數據。 –

+0

然後你的真實功能必須做一些你的問題中的問題。 –

相關問題