Kui lugeda andmeid SQL SERVER Agent tabelitest, MSDB andmebaasist siis kuupäeva ja kellaaeg on antud seal INT väärtuste kujul, et nüüd nendest asjadest mõistlikku kuupäeva saada võib kasutada järgmist funktsiooni mis genereerib kellaaja lähtudes tabeli date ja time numbritest
CREATE FUNCTION [dbo].[SQLSERVERAGENTDATETIME_KUIDO] (@agentdate INT, @agenttime INT)
RETURNS DATETIME
AS
BEGIN
DECLARE @Result DATETIME
DECLARE @date DATETIME, @year INT, @month INT, @day INT, @datestr NVARCHAR(40)
,@hour INT, @min INT, @sec INT, @timestr NVARCHAR(40)
SET @year = (@agentdate / 10000)
SET @month = (@agentdate - (@year * 10000)) / 100
SET @day = (@agentdate - (@year * 10000) - (@month * 100))
IF @agentdate = 0
RETURN @Result --võib rõõmsalt ka NULL-i tagasi anda, kui kuupäeva pole
SET @datestr = CONVERT(NVARCHAR(4), @year) +
RIGHT('0'+CONVERT(NVARCHAR(2), @month),2) +
RIGHT('0'+CONVERT(NVARCHAR(2), @day),2)
SET @hour = (@agenttime / 10000)
SET @min = (@agenttime - (@hour * 10000)) / 100
SET @sec = (@agenttime - (@hour * 10000) - (@min * 100))
SET @timestr = RIGHT('00'+CONVERT(NVARCHAR(2), @hour),2) + N':' +
RIGHT('00'+CONVERT(NVARCHAR(2), @min),2) + N':' +
RIGHT('00'+CONVERT(NVARCHAR(2), @sec),2)
SET @Result = CONVERT(DATETIME, @datestr+' '+@timestr,112)
RETURN @Result
END
Kasutada niimoodi, kui vaja teada millal automaatseid töid käivitati
SELECT [message], run_status, sql_severity, step_id
,[dbo].[SQLSERVERAGENTDATETIME_KUIDO](run_date, run_time) AS RUN_TIME FROM MSDB.dbo.sysjobhistory