PostgreSQL格式化时间戳

时间:2018-03-12 07:20:49

标签: postgresql for-loop timestamp

我在PostgreSQL中创建了包含4列(employee_idfirst_namelast_namedate_of_birth,所有NOT NULLemployee_id的表员工是主键。)

现在,我的表中有704条记录,并使用for循环添加更多记录。为此,我写了这段代码:

DO
$do$declare
   r text;
BEGIN 
   FOR i in 705..50000 LOOP
      r = i::text||'days';
      INSERT INTO employees(employee_id, first_name, last_name, date_of_birth)
         VALUES (
            i,
            'ww'||i::varchar,
            'ss'||i::varchar,
            '1980-01-01 00:00:00'+interval r
         );
   END LOOP;
END
$do$;

但它在使用r时出错。我该如何修复此代码?

1 个答案:

答案 0 :(得分:0)

请试试这个

CREATE OR REPLACE FUNCTION sp_test()
RETURNS void AS 
$BODY$
declare  r text;
begin 
 for i in 705..750 
 loop
    r := i::text||' days';

    insert into employees(employee_id, first_name, last_name, date_of_birth)
     values (i,
          'ww'||i::varchar,
          'ss'||i::varchar,
          '1980-01-01 00:00:00'::TIMESTAMP + r::interval);
 end loop;
end
$BODY$
LANGUAGE plpgsql;

更多说明:您的代码为i::text || 'days',我们会根据需要输出705days而不是705 days。另一个地方是'1980-01-01 00:00:00' + interval r,我会更清楚地将其更改为'1980-01-01 00:00:00'::TIMESTAMP + r::interval

我希望这会对你有所帮助。