运行 持续时间 sysjobs - sysjobshistory

Run duration sysjobs - sysjobshistory

我有一个关于 sysjobs run_duration 的问题。官方文档似乎自相矛盾:

https://docs.microsoft.com/en-us/sql/relational-databases/system-tables/dbo-sysjobhistory-transact-sql?view=sql-server-2017

首先它指定:

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

请注意区别,天数 'suddenly' 被纳入画面。

在我的现实生活中,我遇到了一份 运行 很长的工作。结果如下:

run_duration (DD:HH:MM:SS)  run_duration
01:49:39:39                 1493939

那么我该如何阅读呢?这实际上是 149 小时 39 分 39 秒吗?

1 天和 49 没有意义。

非常感谢您的反馈!

通常情况下,如果您使用带时间的符号,则最大分母不受限制;就像你在 24 小时停下来因为那是一天中有多少人。因此,在格式 HHMMSS 中,HH 可以是 0+ 中的任何值。 HH 不限于 24,因为您没有使用天分母。就像您计算月份一样,即使两个日期之间相差 16 个月,您也不会停止为 12。你在数月,所以为什么跨越一年的差距会阻止你。

就像你评论的那样,1 天 49 小时字面上没有意义。 1493939应该读作149小时39分39秒。