Olá pessoal,
Boa tarde!
Nesses últimos dias estou meio sem tempo, mas para não ficar sem atualizar aqui vou fazer mais um post rápido demonstrando como como converter milissegundos, segundos ou minutos para TIME no SQL Server.
Muitas vezes em nossas rotinas, principalmente quando criamos logs de execução de rotinas medindo o tempo gasto para o processamento, temos a necessidade de armazenar esses registros em uma campo TIME ou uma string que simule o comportamento do tipo de dado TIME (Ex: 00:01:08.57800)
Porém, a conversão apesar de ser simples, não é tão trivial e gera muitas dúvidas, principalmente em desenvolvedores iniciantes no SQL Server que acabam utilizando até funções para fazer essa tarefa e aplicando em grandes volumes de dados, prejudicando a performance da query. Por este motivo, resolvi criar esse post para auxiliar nessa dúvida.
1 2 3 4 5 6 7 8 9 10 11 |
-- Converter 5874502 Milisegundos para tempo SELECT CONVERT(TIME, DATEADD(MILLISECOND, 5874502 + 86400000, 0), 114) -- Converter 587 Segundos para tempo SELECT CONVERT(TIME, DATEADD(SECOND, 587 + 86400000, 0), 114) -- Converter 457 Minutos para tempo SELECT CONVERT(TIME, DATEADD(MINUTE, 457 + 86400000, 0), 114) -- Converter 5874502 Milisegundos para string SELECT CONVERT(VARCHAR(12), DATEADD(MILLISECOND, 5874502 + 86400000, 0), 114) |
Até a próxima!
Como converter milissegundos milisegundos, segundos ou minutos para TIME no SQL Server, convert seconds minutes milliseconds to time
Como converter milissegundos milisegundos, segundos ou minutos para TIME no SQL Server, convert seconds minutes milliseconds to time
Dirceu, boa tarde!
Utilizando a DMV-sys.dm_exec_query_stats para validar o tempo de utilização de CPU para as consultas em execução gostaria de converter o campo min_worker_time que é relatado em MICROSEGUNDOS conforme a documentação com o seu script disponibilizado acima, porém, percebo que o tempo para algumas consulta estão com o tempo de CPU acima do aceitável, posso converter microsegundos dessa forma conforme abaixo?
SELECT TOP(10)
SUBSTRING(EST.TEXT, (EQS.statement_start_offset / 2) + 1,
((CASE EQS.statement_end_offset
WHEN -1 THEN DATALENGTH(EST.TEXT)
ELSE EQS.statement_end_offset
END – EQS.statement_start_offset) / 2) + 1) AS Command,
EQS.total_worker_time,
CONVERT(VARCHAR(8), DATEADD(MILLISECOND, EQS.min_worker_time + 86400000, 0), 114) AS Tempo_CPU,
ECP.query_plan
FROM sys.dm_exec_query_stats EQS
CROSS APPLY sys.dm_exec_sql_text(EQS.sql_handle) EST
CROSS APPLY sys.dm_exec_query_plan(EQS.plan_handle) ECP
ORDER BY EQS.total_worker_time DESC
Muito UtÃl o Script
Muito bomm
Obrigado, Rafael 🙂