我想编写一个查询以从“msdb.dbo.sysjobhistory”表中获取最近 24 小时的作业记录,但我无法获取,因为我得到“run_date”和“run_time”列作为数字返回。如何将“run_date”和“run_time”列转换为日期时间变量,并使用它来获取过去 24 小时的作业历史记录?
最佳答案
查看 this post - 它显示了如何从 run_date
中“解码”那些 sysjobhistory
列。
您应该能够通过如下查询获取过去 24 小时内的条目:
SELECT
j.name as JobName,
LastRunDateTime =
CONVERT(DATETIME, CONVERT(CHAR(8), run_date, 112) + ' '
+ STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), run_time), 6), 5, 0, ':'), 3, 0, ':'), 121)
FROM
msdb..sysjobs j
INNER JOIN
msdb..sysjobhistory jh ON j.job_id = jh.job_id
WHERE
CONVERT(DATETIME, CONVERT(CHAR(8), run_date, 112) + ' '
+ STUFF(STUFF(RIGHT('000000' + CONVERT(VARCHAR(8), run_time), 6), 5, 0, ':'), 3, 0, ':'), 121) > DATEADD(HOUR, -24, GETDATE())
关于sql - 从 msdb.dbo.sysjobhistory 获取最近 24 小时的作业记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3895970/