2010-10-09 73 views
5

我更新鮮的SQL,我想寫一個查詢來從msdb.dbo.sysjobhistory獲得最後24小時工作記錄,但我不能得到因爲,在這裏我獲取run_date和run_time,就像number.how一樣,我會將run_date和run_time轉換爲datetime並獲取最後24小時的工作記錄。獲取最後24小時工作記錄表格msdb.dbo.sysjobhistory

我使用SQL Server 2000中

在此先感謝

+0

你能發表一些你有的數字的例子嗎?或者你知道格式?它們可能是紀元秒,毫秒,或格式爲20101008123456,或其他 - 它會影響答案。 – 2010-10-09 07:02:34

+0

我得到的run_date格式像20100628 和RUN_TIME像192649 – 2010-10-09 07:47:00

回答

9

退房this post - 它顯示瞭如何從sysjobhistory 「解碼」 那些run_date列。

你應該能夠得到從過去的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()) 
+0

您好,感謝replys.actually IM執行folloing查詢:: 選擇sysjobs.job_id,sysjobs.name,sysjobhistory.step_name,sysjobhistory.message,sysjobhistory。 run_status,sysjobhistory.run_date,sysjobhistory.run_time,sysjobhistory.run_duration,sysjobs.date_created,sysjobs.date_modified,從sysjobhistory內蒙古sysjobs.version_number加入上sysjobhistory.job_id = sysjobs.job_id sysjobs如何,我可以根據日期時間過濾器 – 2010-10-09 07:42:35

+0

獲取記錄感謝「marc_s」它的工作完美....再次感謝 – 2010-10-09 08:06:36

+1

謝謝馬克它幫了很多 – Ravia 2012-03-09 14:54:45

3

對於2000年以後的數據庫,有msdb數據庫的函數可以調用,將返回日期時間:

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

如果您使用的是SQL 2000,你可以在函數的源代碼,從更高版本複製並在2000年實例我希望我能邀功這一切創造它,但我最初在這裏找到它:mssqltips.com