我有一个简单的问题。我对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 ||
我做错了什么。任何帮助将不胜感激
答案 0 :(得分:2)
猜测(缺少函数定义的其余部分)。
这可以在PL/pgSQL(在幕后使用)中使用:
window_end_date := window_start_date + interval duration;
或者:
window_end_date := window_start_date + duration::interval;
Cast将text
值设置为interval
以使其正常工作。但最好将变量duration
声明为interval
开始(可能就是这种情况,然后丢弃演员 - 信息丢失)。
plpgsql中的赋值运算符为:=
,而不是=
。
结果是timestamp
,而不是date
。但是在你的例子中它将被强制转换为date
。