PGSQL:添加可变间隔 - 语法错误

时间:2014-03-30 20:16:28

标签: postgresql syntax syntax-error plpgsql

我有一个简单的问题。我对pgsql相当新,我无法弄清楚如何修复下面的语法错误。

这是我想要做的事情

start_date := '2011-01-01'::date;
end_date   := '2011-03-01'::date;
duration := '6 months'

    while start_date < end_date loop
        window_start_date = start_date;
        window_end_date = window_start_date + interval||duration||;

    end loop;

但是我一直收到语法错误。

ERROR:  column "interval" does not exist
LINE 1: SELECT   $1  + interval|| $2 ||
                       ^
QUERY:  SELECT   $1  + interval|| $2 ||

我做错了什么。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:2)

猜测(缺少函数定义的其余部分)。
这可以在PL/pgSQL(在幕后使用)中使用:

window_end_date := window_start_date + interval duration;

或者:

window_end_date := window_start_date + duration::interval;
  • Casttext值设置为interval以使其正常工作。但最好将变量duration声明为interval开始(可能就是这种情况,然后丢弃演员 - 信息丢失)。

  • plpgsql中的赋值运算符为:=,而不是=

  • 结果是timestamp,而不是date。但是在你的例子中它将被强制转换为date