Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

17 de novembro de 2020

SQL: Converter tempo decimal em horas e minutos





No post de hoje irei mostrar algumas formas de transformar horas em decimal, no meu caso essa necessidade surgiu porque a funcionalidade grava as horas de uma tarefa no formato decimal, pois o usuário desejava ver essa quantidade de tempo em decimal e também realizar alguns cálculos, mas depois de certo tempo ele quis também um relatório onde exibisse a quantidade de tempo no formato de horas (time)

A primeira forma que vou mostrar é para converter para varchar, isso porque o período de tempo poderia ultrapassar as 24 horas que o formato time do sql suporta

DECLARE @HORAS decimal(7,4) = 25.5599
SELECT
RIGHT('0' + CAST (FLOOR(@HORAS ) AS VARCHAR), 2) + ':' +
RIGHT('0' + CAST(FLOOR((((@HORAS * 3600) % 3600) / 60)) AS VARCHAR), 2) + ':' +
RIGHT('0' + CAST (FLOOR((@HORAS * 3600) % 60) AS VARCHAR), 2)

Caso não ocorra nunca a possibilidade de passar das 24 horas você pode converter para o formato time de uma forma mais simples.

DECLARE @HORAS decimal(7,4) = 20.5599
SELECT  CAST(CONVERT(VARCHAR,DATEADD(SECOND, @HORAS * 3600, 0),108) AS TIME)

Ler