You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MariaDB存储过程中显示微秒级时间与精确耗时

解决MariaDB存储过程高精度执行摘要显示问题

核心修改点

要实现微秒级精度的时间显示和耗时计算,需从时间获取、时间格式化、耗时计算三个维度调整:

  1. 获取微秒级时间戳
    替换原NOW()为SYSDATE(6),后者返回包含6位微秒的系统时间,确保时间精度。

    存储过程入口修改:

    -- 记录开始时间(含微秒)
    SET tsStart = SYSDATE(6);
    

    存储过程结尾修改:

    -- 记录结束时间(含微秒)
    SET tsEnd = SYSDATE(6);
    

    注意:若未声明tsStart和tsEnd的类型,建议显式定义为DATETIME(6)以支持微秒存储:

    DECLARE tsStart DATETIME(6);
    DECLARE tsEnd DATETIME(6);
    
  2. 格式化时间显示
    使用DATE_FORMAT()函数将时间戳格式化为包含微秒的字符串,确保开始/结束时间显示到微秒级。

  3. 计算带小数的耗时
    通过TIMESTAMPDIFF(MICROSECOND, ...)获取微秒级时间差,除以1000000转换为带小数的秒数,用ROUND()保留6位小数保证精度。

修改后的完整查询语句

SELECT
    CONCAT("Tickets requested: ", intTickets) AS `Tickets Requested`,
    CONCAT("Tickets reserved: ", intTicketsReserved) AS `Tickets Reserved`,
    CONCAT("Start time: ", DATE_FORMAT(tsStart, '%Y-%m-%d %H:%i:%s.%f')) AS `Start Time`,
    CONCAT("End time: ", DATE_FORMAT(tsEnd, '%Y-%m-%d %H:%i:%s.%f')) AS `End Time`,
    CONCAT("Elapsed: ", ROUND(TIMESTAMPDIFF(MICROSECOND, tsStart, tsEnd)/1000000, 6), " seconds") AS `Elapsed Time`;

预期输出示例

'Tickets requested: 2500', 'Tickets reserved: 2347', 'Start time: 2024-01-03 12:35:46.123456', 'End time: 2024-01-03 12:35:48.789012', 'Elapsed: 2.665556 seconds'

内容的提问来源于stack exchange,提问作者SPlatten

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 21:17:06