CREATE FUNCTION FN_MINUTO_HORA (@Minutos INT)
RETURNS NVARCHAR(7)
BEGIN
DECLARE @vHoras INTEGER, @vMinutos INTEGER, @HoraFormatada VARCHAR(7)
SET @vHoras = CAST(ROUND(@Minutos / 60, 0) AS INT)
SET @vMinutos = @Minutos % 60
SET @HoraFormatada = CASE LEN(@vHoras)
WHEN 0 THEN '00'
WHEN 1 THEN '0' + CONVERT(NVARCHAR(1), @vHoras)
ELSE CONVERT(NVARCHAR(4),@vHoras)
END
SET @HoraFormatada = @HoraFormatada + ':' +
CASE LEN(@vMinutos)
WHEN 0 THEN '00'
WHEN 1 THEN '0' + CONVERT(NVARCHAR(3), @vMinutos)
ELSE CONVERT(NVARCHAR(4), @vMinutos)
END
RETURN @HoraFormatada
END
Caso você tenha o banco de dados Oracle, a função SQL é esta aqui em baixo:
create or replace FUNCTION FN_MINUTO_HORA (p_Minutos IN NUMBER)Para executar basta, fazer assim:
RETURN VARCHAR2
IS
vHoras varchar2(9);
vMinutos varchar2(9);
HoraFormatada VARCHAR2(9);
BEGIN
vHoras := TRUNC(p_Minutos / 60); -- Divide os minutos por 60 para obter as horas
vMinutos := MOD(p_Minutos, 60); -- O restante são os minutos
IF LENGTH(REPLACE(vHoras,'-')) >= 3 THEN
HoraFormatada := REPLACE(TO_CHAR(vHoras,'000'),'-') || ':' || TRIM(LPAD(REPLACE(vMinutos,'-'), 2, '0'));
ELSE
HoraFormatada := REPLACE(TO_CHAR(vHoras,'00'),'-') || ':' || TRIM(LPAD(REPLACE(vMinutos,'-'), 2, '0'));
END IF;
IF vMinutos < 0 THEN
HoraFormatada := TO_CHAR( '-' || TRIM(HoraFormatada));
ELSE HoraFormatada := TRIM(TO_CHAR(HoraFormatada));
END IF;
RETURN HoraFormatada;
END;
SELECT dbo.FN_MINUTO_HORA(14251)Gostou da dica, comente e compartilhe
0 Comentários