我想编写一个查询以从“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/

10-11 22:23
查看更多