V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
heavyrainn
V2EX  ›  程序员

请问如何在 PG 的 function 里面记录每一步骤的时间呢?

  •  
  •   heavyrainn · 2019-11-27 16:59:44 +08:00 · 1171 次点击
    这是一个创建于 1826 天前的主题,其中的信息可能已经有所发展或是发生改变。

    发现了 PG 的一个问题,就是当我在一个 function 中记录不同的 now()的时候,实际上这些 now()是同一个值。案例如下:

    --创建日志表
    create table dw_sp_log
    (
        log_no serial,
        log_time varchar(60),
        schema_nm varchar(60),
        proc_nm varchar(60),
        log_level varchar(60),
        log_msg text
    );
    --创建日志存储过程
    create or replace function SP_CM_GEN_LOG(
    in vc_log_time varchar,
    in vc_schema varchar,
    in vc_proc varchar,
    in vc_level varchar,
    in vc_msg text
    )
    returns void as $$
        declare
    
        begin
            insert into dw_sp_log(log_time,schema_nm, proc_nm, log_level, log_msg) values(vc_log_time,vc_schema,vc_proc,vc_level,vc_msg);
        end;
    $$  language plpgsql;
    --在存储过程中记录日志
    create or replace function RUN_SP_CM_GEN_LOG(
    )
    returns void as $$
        declare
    
        begin
            perform SP_CM_GEN_LOG(now()::text,'1','1','1','1');
            perform pg_sleep(5);
            perform SP_CM_GEN_LOG(now()::text,'2','2','2','2');
        end;
    $$  language plpgsql;
    

    执行 select RUN_SP_CM_GEN_LOG()会发现里面记录的 log_time 是相同的。但是实际上应该差 5 秒才对,请问如何实现呢?谢谢大家

    3 条回复    2019-11-28 15:28:33 +08:00
    xjmroot
        1
    xjmroot  
       2019-11-27 17:53:39 +08:00   ❤️ 1
    试试 clock_timestamp()::TEXT
    zjp
        2
    zjp  
       2019-11-27 18:44:05 +08:00 via Android   ❤️ 1
    now(): Current date and time (start of current transaction)
    clock_timestamp()才是当前时刻
    https://www.postgresql.org/docs/8.2/functions-datetime.html#FUNCTIONS-DATETIME-CURRENT
    heavyrainn
        3
    heavyrainn  
    OP
       2019-11-28 15:28:33 +08:00
    非常感谢二位~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1128 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 22:50 · PVG 06:50 · LAX 14:50 · JFK 17:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.