2010-10-09 9 views
5

Jestem świeższe w SQL, chcę napisać zapytanie, aby uzyskać ostatni rekord pracy 24 godzin z msdb.dbo.sysjobhistory, ale nie mogę uzyskać, ponieważ, tutaj i get run_date i run_time podobnie jak number.how będę konwertować run_date i run_time na datetime i uzyskać ostatni rekord pracy 24 godzin.Zdobądź ostatni formularz zapisu pracy 24-godzinnej msdb.dbo.sysjobhistory

używam SQL Server 2000

góry dzięki

+0

Czy możesz podać kilka przykładów numerów, które posiadasz? Czy znasz format? Mogą to być sekundy, milisekundy lub sformatowane 20101008123456 lub coś innego - co wpłynie na odpowiedź. –

+0

ja dostać run_date w formacie jak 20100628 i run_time jak 192649 –

Odpowiedz

9

Check out this post - to pokazuje jak "rozszyfrować" te run_date kolumny z sysjobhistory.

Powinieneś być w stanie uzyskać dane z ostatnich 24 godzin z czymś zapytań jak ten:

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

Cześć, dzięki za replys.actually im wykonującego zapytanie folloing :: wybierz 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 z sysjobhistory sprzężenia wewnętrznego sysjobs na sysjobhistory.job_id = sysjobs.job_id jak mogę dostać zapis zgodnie z filtrem datetime –

+0

dziękuję "marc_s" jego pracy doskonale .... dzięki znowu –

+1

Dzięki Marc bardzo pomógł – Ravia

3

dla baz danych po 2000 roku, nie jest funkcją w bazie msdb można nazwać powróci datetime:

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

Jeśli używasz sQL 2000, można skopiować źródło tej funkcji z nowszej i utworzyć ją w instancji 2000. Chciałabym wziąć kredyt na to wszystko, ale pierwotnie znalazłem tutaj: mssqltips.com