2010-10-09 8 views
5

Ich bin frischer in SQL, ich möchte eine Abfrage schreiben, um die letzten 24 Stunden Aufträge Datensatz von msdb.dbo.sysjobhistory, aber ich kann nicht bekommen, weil ich hier hole das run_date und run_time wie die Zahl.wie ich run_date und run_time in datetime umwandle und den letzten 24 Stunden Job-Eintrag bekomme.Holen Sie sich die letzten 24 Stunden Job-Datensatz Formular msdb.dbo.sysjobhistory

Ich bin mit SQL Server 2000

Dank im Voraus

+0

können Sie einige Beispiele für Ihre Nummern posten? Oder kennst du das Format? Sie können Epochen Sekunden, Millisekunden oder formatiert sein 20101008123456 oder etwas anderes - was es ist, wird die Antwort beeinflussen. –

+0

bekomme ich die run_date im Format wie 20.100.628 und run_time wie 192.649 –

Antwort

9

Check out this post - es zeigt, wie man "entschlüsseln", jene run_date Spalten von sysjobhistory.

Sie sollten in der Lage sein, die Einträge aus den letzten 24 Stunden mit einer Abfrage, so etwas zu bekommen:

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

Hallo, danke für replys.actually im Ausführen der folloing Abfrage :: wählen 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 von sysjobhistory Inner Join sysjobs auf sysjobhistory.job_id = sysjobs.job_id , wie ich Datensatz nach Datetime-Filter bekommen –

+0

danke "marc_s" es funktioniert einwandfrei .... danke nochmal –

+1

Danke Marc es hat sehr geholfen – Ravia

3

Für Datenbanken nach 2000 gibt es eine Funktion in der msdb-Datenbank, dass anrufen können zurückkehren Datetime:

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

Wenn Sie sQL 2000 verwenden, können Sie die Quelle dieser Funktion aus einer späteren Version, und erstellen Sie es in Ihrer Instanz von 2000. ich wünsche kopieren kann ich Kredit für all dies nehmen könnte, aber ich ursprünglich hier gefunden: mssqltips.com