功能不工作的时间间隔

时间:2016-03-13 09:10:30

标签: sql postgresql

我有一个功能:

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

我该怎么办?

1 个答案:

答案 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