【发布时间】:2020-09-24 12:57:05
【问题描述】:
我想运行这段代码,但遇到了这个错误
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
execute $$SELECT MAX(date) FROM $$||table_name INTO datum;
IF datum is not NULL THEN
execute $$DELETE FROM $$||table_name||$$ WHERE date >= $$||quote_literal(datum);
ELSE
datum := $$2001-01-01$$;
end if;
execute $$
INSERT INTO $$||table_name||$$
(number, date, departement, minutes)
select
number, gs.date,
哪里 (beg, enddate) 重叠 (concat($$||quote_literal(datum)||$$, '00:00:00'), concat($$||quote_literal(datum)||$$, '23:59:59'))
我们还要注意 哪里 (beg, enddate) 重叠 (concat($$||quote_literal(datum)||$$, '00:00:00'), concat($$||quote_literal( datum)||$$, '23:59:59')) 只想在 datum != $$2001-01-01$$; (不是第一次迭代)。
谢谢,
【问题讨论】:
-
||就够了。 -
请问您是什么意思。? @ceving
-
||已经是一个连接运算符,用于连接。因此,您不需要另外使用 concat 。在此处阅读更多信息postgresql.org/docs/9.1/functions-string.html -
datum是什么数据类型? -
我看到我在 $$||quote_literal(datum)||$$ '00:00:00' 之前做过这个并且也得到了错误:::::: :: psycopg2.ProgrammingError:在“00:00:00”或附近出现语法错误
标签: sql postgresql plpgsql dynamic-sql