PostgreSQL 格式化时间戳

标签 postgresql for-loop timestamp

我在 PostgreSQL 中创建表 employees 有 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 时出错。如何修复此代码?

最佳答案

请试试这个

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 更清晰。

希望对您有所帮助。

关于PostgreSQL 格式化时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49229974/

相关文章:

sql - 在 SQL Server 2008R2 上以毫秒为单位返回 DATEDIFF

mongodb - 在 mongodb 中按带时间戳的日期聚合数据

performance - 使用 'similar to' 在 PostgreSQL 中查询性能

java - 如何使用 JPA 实体构建和填充数据库?

sql - 替代 Postgres SERIAL 字段以解决在 ON CONFLICT 导致更新时递增的值

jquery - 无法在标签标记中循环 div 并获取其第一个子级的文本内容

c - 使用 scanf 将一串整数捕获到 C 中的数组中

mysql - 什么通常更快,通过文件搜索或通过 blob 运行 SQL LIKE %x% 查询?

python - 检查一行是否以列表中的字符串开头的首选方法?

shell - 如何从 Mongo ObjectID 中提取创建日期