我有一张这样的桌子:
CREATE TABLE DateInsert(
DateInsert timestamp without time zone,
DateInt integer NOT NULL
);
我想插入清单日期为2018年1月1日至2045-05-18,但这给了我错误的答案
“类型间隔的无效输入语法:”
CREATE OR REPLACE FUNCTION insertdate() RETURNS integer AS $$
DECLARE i integer := 0;
d timestamp without time zone := '2018-01-01';
di integer := 0;
BEGIN
while i <10000
LOOP
d := d + INTERVAL ''+ i::character varying + ' day';
di := to_char(d , 'yyyymmdd')::int;
insert into DateInsert(DateInsert,DateInt) values(d, di);
i := i+1;
END LOOP ;
return i;
END;
$$ LANGUAGE plpgsql;
如何在n天循环中将时间戳加1的db插入数据库?
在sql server中的代码一直在工作。
declare @i int=0
declare @d datetime
declare @di int = 0
while @i <10000
begin
set @d = DATEADD(DAY, @i, '2018-01-01')
set @di = cast(CONVERT(VARCHAR(10), @d, 112) as int)
insert into DateInsert(DateInsert,DateInt) values(@d, @di)
set @i = @i+1
end
答案 0 :(得分:3)
串联运算符是||
而不是+
。而且前缀形式似乎不喜欢文字。但是您可以强制转换连接表达式。
如此改变
...
d := d + INTERVAL ''+ i::character varying + ' day';
...
到
...
d := d + (i || ' day')::interval;
...
应该为您工作。