• I know you don't want to see or hear from me but here is an alternative solution to yours:

    SELECT

    j.name,

    msdb.dbo.Agent_datetime(h.run_date, h.run_time) AS Run_Datetime,

    dateadd(second, ((h.run_duration / 10000) * 3600) + (((h.run_duration / 100) % 60) * 60) + (h.run_duration % 60), msdb.dbo.Agent_datetime(h.run_date, h.run_time)) as Run_EndDate,

    Stuff(Stuff(RIGHT('000000' + Cast(h.run_duration AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') as RunDuration,

    CASE h.run_status

    WHEN 0 THEN 'failed'

    WHEN 1 THEN 'Succeded'

    WHEN 2 THEN 'Retry'

    WHEN 3 THEN 'Cancelled'

    WHEN 4 THEN 'In Progress'

    END AS ExecutionStatus,

    h.message,

    h.step_id

    FROM

    msdb.dbo.sysjobs j

    JOIN msdb.dbo.sysjobhistory h

    ONh.job_id = j.job_id

    order by

    j.name,

    h.run_date,

    h.step_id

    Test Harness used:

    set nocount on;

    GO

    Print '------------ Welsh Corgi version ------------';

    GO

    --===== Create the timer and bit-bucket variables and start the timer.

    DECLARE @Bitbucket sysname; --< change or add variables needed here to eliminate display distortion

    Declare @cpu_ int,

    @lreads_ bigint,

    @eMsec_ bigint,

    @Reads_ bigint,

    @Writes_ bigint;

    declare @CpuMs int,

    @LogRds bigint,

    @Elapsed bigint,

    @Reads bigint,

    @Writes bigint;

    dbcc freeproccache with no_infomsgs;

    dbcc freesystemcache('ALL') with no_infomsgs;

    dbcc dropcleanbuffers with no_infomsgs;

    Select

    @cpu_ = cpu_time

    , @lreads_ = logical_reads

    , @eMsec_ = total_elapsed_time

    , @Reads_ = reads

    , @Writes_ = writes

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    ---

    SELECT DISTINCT

    j.Name AS Job_Name,

    msdb.dbo.Agent_datetime(Run_Date, Run_Time) AS Run_Datetime,

    Dateadd(second, Datediff(second, 0, msdb.dbo.Agent_datetime(19000101, Run_Duration)), msdb.dbo.Agent_datetime(Run_Date, Run_Time)) AS Run_Endtime,

    Stuff(Stuff(RIGHT('000000' + Cast(Run_Duration AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') AS Run_Duration,

    CASE h.Run_Status

    WHEN 0 THEN 'failed'

    WHEN 1 THEN 'Succeded'

    WHEN 2 THEN 'Retry'

    WHEN 3 THEN 'Cancelled'

    WHEN 4 THEN 'In Progress'

    END AS ExecutionStatus,

    h.Message ,

    h.Step_ID AS Step_ID

    FROM

    msdb.dbo.Sysjobhistory h

    INNER JOIN msdb.dbo.Sysjobs j

    ON h.Job_id = j.Job_id

    INNER JOIN msdb.dbo.sysjobsteps js

    ON js.job_id = j.job_id

    option (maxdop 1)

    ---

    Select

    @CpuMs = cpu_time - @cpu_

    , @LogRds = logical_reads - @lreads_

    , @Elapsed = total_elapsed_time - @eMsec_

    , @Reads = reads - @Reads_

    , @Writes = writes - @Writes_

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    --===== Display the duration

    PRINT 'Cold cache';

    PRINT 'CPU(ms): ' + right(' ' + cast(@CpuMs as varchar(10)),10) +

    ' Logical Reads: ' + right(' ' + cast(@LogRds as varchar(10)),10) +

    ' Elapsed(ms): ' + right(' ' + cast(@Elapsed as varchar(10)),10) +

    ' Reads: ' + right(' ' + cast(@Reads as varchar(10)),10) +

    ' Writes: ' + right(' ' + cast(@Writes as varchar(10)),10);

    go

    PRINT 'Warm cache';

    GO

    Declare @cpu_ int,

    @lreads_ bigint,

    @eMsec_ bigint,

    @Reads_ bigint,

    @Writes_ bigint;

    declare @CpuMs int,

    @LogRds bigint,

    @Elapsed bigint,

    @Reads bigint,

    @Writes bigint;

    Select

    @cpu_ = cpu_time

    , @lreads_ = logical_reads

    , @eMsec_ = total_elapsed_time

    , @Reads_ = reads

    , @Writes_ = writes

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    ---

    SELECT DISTINCT

    j.Name AS Job_Name,

    msdb.dbo.Agent_datetime(Run_Date, Run_Time) AS Run_Datetime,

    Dateadd(second, Datediff(second, 0, msdb.dbo.Agent_datetime(19000101, Run_Duration)), msdb.dbo.Agent_datetime(Run_Date, Run_Time)) AS Run_Endtime,

    Stuff(Stuff(RIGHT('000000' + Cast(Run_Duration AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') AS Run_Duration,

    CASE h.Run_Status

    WHEN 0 THEN 'failed'

    WHEN 1 THEN 'Succeded'

    WHEN 2 THEN 'Retry'

    WHEN 3 THEN 'Cancelled'

    WHEN 4 THEN 'In Progress'

    END AS ExecutionStatus,

    h.Message ,

    h.Step_ID AS Step_ID

    FROM

    msdb.dbo.Sysjobhistory h

    INNER JOIN msdb.dbo.Sysjobs j

    ON h.Job_id = j.Job_id

    INNER JOIN msdb.dbo.sysjobsteps js

    ON js.job_id = j.job_id

    option (maxdop 1)

    ---

    Select

    @CpuMs = cpu_time - @cpu_

    , @LogRds = logical_reads - @lreads_

    , @Elapsed = total_elapsed_time - @eMsec_

    , @Reads = reads - @Reads_

    , @Writes = writes - @Writes_

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    --===== Display the duration

    PRINT 'CPU(ms): ' + right(' ' + cast(@CpuMs as varchar(10)),10) +

    ' Logical Reads: ' + right(' ' + cast(@LogRds as varchar(10)),10) +

    ' Elapsed(ms): ' + right(' ' + cast(@Elapsed as varchar(10)),10) +

    ' Reads: ' + right(' ' + cast(@Reads as varchar(10)),10) +

    ' Writes: ' + right(' ' + cast(@Writes as varchar(10)),10);

    go 10

    set nocount off;

    GO

    set nocount on;

    GO

    Print '------------ Alternative version ------------';

    GO

    --===== Create the timer and bit-bucket variables and start the timer.

    DECLARE @Bitbucket sysname; --< change or add variables needed here to eliminate display distortion

    Declare @cpu_ int,

    @lreads_ bigint,

    @eMsec_ bigint,

    @Reads_ bigint,

    @Writes_ bigint;

    declare @CpuMs int,

    @LogRds bigint,

    @Elapsed bigint,

    @Reads bigint,

    @Writes bigint;

    dbcc freeproccache with no_infomsgs;

    dbcc freesystemcache('ALL') with no_infomsgs;

    dbcc dropcleanbuffers with no_infomsgs;

    Select

    @cpu_ = cpu_time

    , @lreads_ = logical_reads

    , @eMsec_ = total_elapsed_time

    , @Reads_ = reads

    , @Writes_ = writes

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    ---

    SELECT

    j.name,

    msdb.dbo.Agent_datetime(h.run_date, h.run_time) AS Run_Datetime,

    dateadd(second, ((h.run_duration / 10000) * 3600) + (((h.run_duration / 100) % 60) * 60) + (h.run_duration % 60), msdb.dbo.Agent_datetime(h.run_date, h.run_time)) as Run_EndDate,

    Stuff(Stuff(RIGHT('000000' + Cast(h.run_duration AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') as RunDuration,

    CASE h.run_status

    WHEN 0 THEN 'failed'

    WHEN 1 THEN 'Succeded'

    WHEN 2 THEN 'Retry'

    WHEN 3 THEN 'Cancelled'

    WHEN 4 THEN 'In Progress'

    END AS ExecutionStatus,

    h.message,

    h.step_id

    FROM

    msdb.dbo.sysjobs j

    JOIN msdb.dbo.sysjobhistory h

    ONh.job_id = j.job_id

    order by

    j.name,

    h.run_date,

    h.step_id

    option (maxdop 1)

    ---

    Select

    @CpuMs = cpu_time - @cpu_

    , @LogRds = logical_reads - @lreads_

    , @Elapsed = total_elapsed_time - @eMsec_

    , @Reads = reads - @Reads_

    , @Writes = writes - @Writes_

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    --===== Display the duration

    PRINT 'Cold cache';

    PRINT 'CPU(ms): ' + right(' ' + cast(@CpuMs as varchar(10)),10) +

    ' Logical Reads: ' + right(' ' + cast(@LogRds as varchar(10)),10) +

    ' Elapsed(ms): ' + right(' ' + cast(@Elapsed as varchar(10)),10) +

    ' Reads: ' + right(' ' + cast(@Reads as varchar(10)),10) +

    ' Writes: ' + right(' ' + cast(@Writes as varchar(10)),10);

    go

    PRINT 'Warm cache';

    go

    Declare @cpu_ int,

    @lreads_ bigint,

    @eMsec_ bigint,

    @Reads_ bigint,

    @Writes_ bigint;

    declare @CpuMs int,

    @LogRds bigint,

    @Elapsed bigint,

    @Reads bigint,

    @Writes bigint;

    Select

    @cpu_ = cpu_time

    , @lreads_ = logical_reads

    , @eMsec_ = total_elapsed_time

    , @Reads_ = reads

    , @Writes_ = writes

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    ---

    SELECT

    j.name,

    msdb.dbo.Agent_datetime(h.run_date, h.run_time) AS Run_Datetime,

    dateadd(second, ((h.run_duration / 10000) * 3600) + (((h.run_duration / 100) % 60) * 60) + (h.run_duration % 60), msdb.dbo.Agent_datetime(h.run_date, h.run_time)) as Run_EndDate,

    Stuff(Stuff(RIGHT('000000' + Cast(h.run_duration AS VARCHAR(6)), 6), 5, 0, ':'), 3, 0, ':') as RunDuration,

    CASE h.run_status

    WHEN 0 THEN 'failed'

    WHEN 1 THEN 'Succeded'

    WHEN 2 THEN 'Retry'

    WHEN 3 THEN 'Cancelled'

    WHEN 4 THEN 'In Progress'

    END AS ExecutionStatus,

    h.message,

    h.step_id

    FROM

    msdb.dbo.sysjobs j

    JOIN msdb.dbo.sysjobhistory h

    ONh.job_id = j.job_id

    order by

    j.name,

    h.run_date,

    h.step_id

    option (maxdop 1)

    ---

    Select

    @CpuMs = cpu_time - @cpu_

    , @LogRds = logical_reads - @lreads_

    , @Elapsed = total_elapsed_time - @eMsec_

    , @Reads = reads - @Reads_

    , @Writes = writes - @Writes_

    From

    sys.dm_exec_requests

    Where

    session_id = @@spid;

    --===== Display the duration

    PRINT 'CPU(ms): ' + right(' ' + cast(@CpuMs as varchar(10)),10) +

    ' Logical Reads: ' + right(' ' + cast(@LogRds as varchar(10)),10) +

    ' Elapsed(ms): ' + right(' ' + cast(@Elapsed as varchar(10)),10) +

    ' Reads: ' + right(' ' + cast(@Reads as varchar(10)),10) +

    ' Writes: ' + right(' ' + cast(@Writes as varchar(10)),10);

    go 10

    set nocount off;

    GO

    Results on my system:

    ------------ Welsh Corgi version ------------

    Cold cache

    CPU(ms): 16 Logical Reads: 646 Elapsed(ms): 162 Reads: 247 Writes: 0

    Warm cache

    Beginning execution loop

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 8 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 7 Reads: 0 Writes: 0

    CPU(ms): 15 Logical Reads: 441 Elapsed(ms): 7 Reads: 0 Writes: 0

    CPU(ms): 16 Logical Reads: 441 Elapsed(ms): 7 Reads: 0 Writes: 0

    CPU(ms): 16 Logical Reads: 441 Elapsed(ms): 8 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 8 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 7 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 8 Reads: 0 Writes: 0

    CPU(ms): 15 Logical Reads: 441 Elapsed(ms): 8 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 441 Elapsed(ms): 7 Reads: 0 Writes: 0

    Batch execution completed 10 times.

    ------------ Alternative version ------------

    Cold cache

    CPU(ms): 0 Logical Reads: 351 Elapsed(ms): 15 Reads: 207 Writes: 0

    Warm cache

    Beginning execution loop

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 1 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 1 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 1 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    CPU(ms): 0 Logical Reads: 225 Elapsed(ms): 2 Reads: 0 Writes: 0

    Batch execution completed 10 times.