首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行持续时间sysjobs sysjobshistory

运行持续时间sysjobs sysjobshistory
EN

Stack Overflow用户
提问于 2018-12-19 18:53:34
回答 1查看 311关注 0票数 0

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

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

首先,它指定:

代码语言:javascript
复制
run_duration    int Elapsed time in the execution of the job or step in HHMMSS format.

但是它也提到了一种更友好的时间格式的查询:

代码语言:javascript
复制
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

注意到不同之处,日期被“突然”带入图片中。

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

代码语言:javascript
复制
run_duration (DD:HH:MM:SS)  run_duration
01:49:39:39                 1493939

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

一天加49是没有意义的。

非常感谢您的反馈!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-19 19:01:04

通常,如果您使用带有时间的表示法,则最大分母不受限制;因为24小时是一天中的最大分母。因此,在HHMMSS格式中,HH可以是0+中的任何值。HH不限于24,因为您没有使用天数分母。就像如果你计算月份,你不会停止为12个月,即使两个日期之间的差距是16个月。你已经数了几个月了,为什么跨越一年的差距会阻止你。

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53849715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档