如何在MariaDB存储过程中显示微秒级时间与精确耗时
解决MariaDB存储过程高精度执行摘要显示问题
核心修改点
要实现微秒级精度的时间显示和耗时计算,需从时间获取、时间格式化、耗时计算三个维度调整:
获取微秒级时间戳
替换原NOW()为SYSDATE(6),后者返回包含6位微秒的系统时间,确保时间精度。存储过程入口修改:
-- 记录开始时间(含微秒) SET tsStart = SYSDATE(6);存储过程结尾修改:
-- 记录结束时间(含微秒) SET tsEnd = SYSDATE(6);注意:若未声明
tsStart和tsEnd的类型,建议显式定义为DATETIME(6)以支持微秒存储:DECLARE tsStart DATETIME(6); DECLARE tsEnd DATETIME(6);格式化时间显示
使用DATE_FORMAT()函数将时间戳格式化为包含微秒的字符串,确保开始/结束时间显示到微秒级。计算带小数的耗时
通过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
相关产品推荐
相关产品推荐

