我对sysjobs的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秒吗?
一天零四十九没有意义。
非常感谢您的反馈!
答案 0 :(得分:2)
通常,如果您使用带符号的时间,则最大分母不受限制;因为您一天24小时会停24小时。因此,在HHMMSS
格式中,HH
可以是0+以上的任何值。 HH不限于24,因为您没有使用天分母。就像您要计算的月份一样,即使两个日期之间的差值为16个月,也不会停止为12。您以月为单位进行计数,那么为什么要跨越一年的差距会阻止您。
就像您评论1天49小时一样,这毫无意义。 1493939
的阅读时间为149小时39分39秒。