select STUFF(
STUFF(RIGHT('000000' + CAST([run_duration] AS VARCHAR(6)), 6)
, 3, 0, ':')
, 6, 0, ':')
AS [LastRunDuration (HH:MM:SS)]
from sysjobhistory
A consulta que dei acima funciona bem, mas estou tentando entendê-la de forma mais clara. Minhas observações são:
- Primeiro, lançamos a duração da execução em
varchar
e com um comprimento 6 e acrescentamos seis 0s à direita dela, o que se torna se for10
então00000010
- Depois de usarmos a função stuff para inserir
:
entre isso, aqui está na 3ª posição, então a acima se torna00:000010
- Mais uma vez, usamos coisas para inserir o
:
símbolo na sexta posição, de modo que se torne00:00:0010
Mas quando executo a consulta, se houver valores 10
, ela será exibida como 00:00:10
.
Como pode ser isso?
Em seu primeiro marcador, você diz que o valor se torna 00000010. Isso está incorreto. Na verdade, torna-se 000010 por causa do RIGHT( , 6).
Para esclarecer, compare a diferença:
Resultados: