2010-10-09 30 views
5

Tôi tươi hơn trong SQL, tôi muốn viết một truy vấn để có được hồ sơ công việc 24 giờ qua từ msdb.dbo.sysjobhistory, nhưng tôi không thể nhận được bởi vì, ở đây tôi lấy run_date và run_time giống như number.how tôi sẽ chuyển đổi run_date và run_time thành datetime và nhận được bản ghi công việc 24 giờ qua.Lấy mẫu hồ sơ công việc 24 giờ cuối cùng msdb.dbo.sysjobhistory

tôi đang sử dụng SQL Server 2000

cảm ơn trước

+0

bạn có thể đăng một số ví dụ về các số bạn có không? Hay bạn có biết định dạng? Chúng có thể là thời gian epoch, mili giây, hoặc định dạng 20101008123456, hoặc một cái gì đó khác - mà nó sẽ ảnh hưởng đến câu trả lời. –

+0

tôi nhận được run_date ở định dạng như 20.100.628 và run_time như 192.649 –

Trả lời

9

Check-out this post - nó cho thấy làm thế nào để "giải mã" những cột run_date từ sysjobhistory.

Bạn sẽ có thể để có được thông tin nhập từ 24 giờ qua với một cái gì đó truy vấn như thế này:

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

Hi, nhờ im replys.actually thực hiện truy vấn folloing :: chọn 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, sysjobs.version_number từ sysjobhistory Nội tham gia sysjobs trên sysjobhistory.job_id = sysjobs.job_id làm thế nào tôi có thể nhận được kỷ lục theo datetime lọc –

+0

cảm ơn "marc_s" công việc của nó hoàn hảo .... cảm ơn một lần nữa –

+1

Cảm ơn Marc nó đã giúp rất nhiều – Ravia

3

Đối với cơ sở dữ liệu sau năm 2000, có một chức năng trong cơ sở dữ liệu msdb bạn có thể gọi đó là sẽ trở lại datetime:

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

Nếu bạn đang sử dụng sql 2000, bạn có thể sao chép nguồn gốc của chức năng đó từ một phiên bản mới hơn và tạo ra nó trong trường hợp của bạn của năm 2000. tôi ước gì tôi có thể mất tín dụng cho tất cả những điều này, nhưng tôi ban đầu tìm thấy nó ở đây: mssqltips.com

Các vấn đề liên quan