我有一个功能:
CREATE OR REPLACE FUNCTION a(b integer)
RETURNS integer AS
$BODY$
declare
c integer;
timevalue text;
begin
timevalue = b::text || ' days'; -- build string like '7 days'
select sum(value)
into c
from tablx
where createdate between current_date - interval timevalue and current_date;
return c;
end;
$BODY$
LANGUAGE plpgsql VOLATILE
功能很简单...给出符合日期标准的记录摘要。
由于某种原因,它不接受current_date - interval timevalue
我该怎么办?
答案 0 :(得分:2)
很遗憾,您无法指定"动态"区间值。但是,由于您总是使用相同的单位,您可以使用:
select sum(value)
into c
from tablx
where createdate between current_date - interval '1' day * b and current_date;
您可以更简单,因为您可以直接从b
current_date
select sum(value)
into c
from tablx
where createdate between current_date - b and current_date;
在表达式date - integer
中,整数值是天数。
有关详细信息,请参阅手册:http://www.postgresql.org/docs/current/static/functions-datetime.html