我有一个关于sysjob的run_duration的问题。官方文件似乎自相矛盾:
首先,它指定:
run_duration int Elapsed time in the execution of the job or step in HHMMSS format.但是它也提到了一种更友好的时间格式的查询:
SELECT sj.name,
sh.run_date,
sh.step_name,
STUFF(STUFF(RIGHT(REPLICATE('0', 6) + CAST(sh.run_time as varchar(6)), 6), 3, 0, ':'), 6, 0, ':') 'run_time',
STUFF(STUFF(STUFF(RIGHT(REPLICATE('0', 8) + CAST(sh.run_duration as varchar(8)), 8), 3, 0, ':'), 6, 0, ':'), 9, 0, ':') 'run_duration (DD:HH:MM:SS) '
FROM msdb.dbo.sysjobs sj
JOIN msdb.dbo.sysjobhistory sh
ON sj.job_id = sh.job_id注意到不同之处,日期被“突然”带入图片中。
在我现实生活中的例子中,我遇到了一个运行时间很长的工作。结果如下:
run_duration (DD:HH:MM:SS) run_duration
01:49:39:39 1493939那么我该如何阅读这篇文章呢?这实际上是149小时39分39秒吗?
一天加49是没有意义的。
非常感谢您的反馈!
发布于 2018-12-19 19:01:04
通常,如果您使用带有时间的表示法,则最大分母不受限制;因为24小时是一天中的最大分母。因此,在HHMMSS格式中,HH可以是0+中的任何值。HH不限于24,因为您没有使用天数分母。就像如果你计算月份,你不会停止为12个月,即使两个日期之间的差距是16个月。你已经数了几个月了,为什么跨越一年的差距会阻止你。
就像你评论的那样,1天49小时从字面上看是没有意义的。1493939应读取为149小时39分39秒。
https://stackoverflow.com/questions/53849715
复制相似问题