Получить последние 24 часа формы записи работы msdb.dbo.sysjobhistory - PullRequest
6 голосов
/ 09 октября 2010

Я более свежий в SQL, я хочу написать запрос, чтобы получить последние 24-часовые записи заданий из msdb.dbo.sysjobhistory, но я не могу получить, потому что здесь я получаю run_date и run_time, как число. Как я будупреобразуйте run_date и run_time в datetime и получите последние 24 часа записи задания.

я использую SQL Server 2000

заранее спасибо

Ответы [ 2 ]

10 голосов
/ 09 октября 2010

Проверьте это сообщение - показывает, как "декодировать" эти 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())
3 голосов
/ 06 сентября 2013

Для баз данных после 2000 года в базе данных msdb есть функция, которую вы можете вызвать и которая будет возвращать datetime:

msdb.dbo.agent_datetime(run_date, run_time) as 'RunDateTime'

Если вы используете sql 2000, вы можете скопировать источник этой функции изболее позднюю версию и создайте ее в своем экземпляре 2000 года. Я хотел бы взять кредит на все это, но я первоначально нашел это здесь: mssqltips.com

...