2010-10-09 18 views
5

SQL'de fresher'im, msdb.dbo.sysjobhistory'den son 24 saat iş kaydı almak için bir sorgu yazmak istiyorum, ama elde edemiyorum çünkü burada run_date ve run_time değerini number.how gibi çalıştırın. run_date ve run_time tarihlerini datetime'a çevirip son 24 saat iş kaydını alacağım.Son 24 saat iş kayıt formunu alın msdb.dbo.sysjobhistory

i peşin SQL Server this post

+0

Elinizde bulunan numaralardan bazı örnekler gönderebilir misiniz? Yoksa formatı biliyor musun? Bunlar, saniye, milisaniye veya biçimlendirilmiş 20101008123456 ya da başka bir şey olabilir - bunun cevabı etkileyeceği başka bir şey olabilir. –

+0

i folloing sorgusu :: seçme sysjobs.job_id, sysjobs.name, sysjobhistory.step_name, sysjobhistory.message, sysjobhistory yürütülmesi replys.actually im sayesinde 20100628 gibi formatında run_date almak ve 192.649 –

cevap

9

Kontrolü 2000

sayesinde dikkat kullanıyorum - bu sysjobhistory gelenler run_date sütunları "deşifre" nasıl gösterir.

Böyle bir sorgu şeyle son 24 saat girişleri almak mümkün olmalıdır: 2000 sonrası veritabanları için

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 gibi run_time. sysjobhistory İç dan run_status, sysjobhistory.run_date, sysjobhistory.run_time, sysjobhistory.run_duration, sysjobs.date_created, sysjobs.date_modified, sysjobs.version_number i datetime filtresine –

+0

göre kayıt almak nasıl sysjobhistory.job_id = sysjobs.job_id üzerinde sysjobs katılmak teşekkürler "marc_s" onun işi mükemmel .... teşekkürler tekrar –

+1

Teşekkürler Marc çok yardımcı oldu – Ravia

3

, sen döneceğini çağırabilir msdbveritabanı bir işlevi yoktur datetime: Eğer sql 2000 kullanıyorsanız

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

, daha sonraki bir sürümden bu işlevin kaynağını kopyalamak ve ben tüm bu krediyi almak isterdim 2000 senin örneğinde oluşturun ama olabilir Aslen burada bulundu: mssqltips.com

İlgili konular