Converter Inteiro em Hora
Bom dia pessoal, não tenho um conhecimento muito avançado em SQL e preciso de uma ajuda... meu ERP salva as informações referentes as batidas do ponto dos colaboradores como um valor inteiro, por exemplo, 420 = 07:00. Como faço essa conversão? Consigo fazer direto no Select?
Thiago Spader
Curtidas 0
Respostas
Emerson Nascimento
03/03/2020
aparentemente grava em minutos.
se você dividir por 60 você terá o valor em horas.
GOSTEI 0
Emerson Nascimento
03/03/2020
aparentemente está gravado em minutos. se você dividir por 60 você terá o valor em horas.
atente-se aos valores decimais, que apresentarão horas centesimais. você precisará transformar em horas sexagesimais.
segue exemplo:
atente-se aos valores decimais, que apresentarão horas centesimais. você precisará transformar em horas sexagesimais.
segue exemplo:
DECLARE @VALOR INTEGER = 440 SELECT @VALOR MINUTOS, (@VALOR / 60.0) HORA_CENTESIMAL_VALOR, (@VALOR / 60)+(ROUND(((@VALOR / 60.0)-(@VALOR / 60))*60,2)/100) HORA_SEXAGESIMAL_VALOR, LEFT(FORMAT(@VALOR / 60,'00')+':'+FORMAT(((@VALOR / 60.0)-(@VALOR / 60))*60,'00'),5) HORA_SEXAGESIMAL_TEXTO
GOSTEI 0
Emerson Nascimento
03/03/2020
note que há divisor decimal (60.0) e divisor inteiro (60). mantenha da forma como apresentado para obter o resultado correto.
GOSTEI 0
Thiago Spader
03/03/2020
Bom dia, tentei fazer no meu código mas ocorreu o erro "A conversão de um tipo de dados varchar em um tipo de dados datetime resultou em um valor fora do intervalo."
select numemp, numcad, datapu, codsit,
LEFT(FORMAT(qtdhor / 60,'00')+':'+FORMAT(((qtdhor / 60.0)-(qtdhor / 60))*60,'00'),5) TESTE
from tabela
where numcad = 1234
and datapu between '01/11/2019' and '31/11/2019'
group by numemp, numcad, datapu, codsit, qtdhor
select numemp, numcad, datapu, codsit,
LEFT(FORMAT(qtdhor / 60,'00')+':'+FORMAT(((qtdhor / 60.0)-(qtdhor / 60))*60,'00'),5) TESTE
from tabela
where numcad = 1234
and datapu between '01/11/2019' and '31/11/2019'
group by numemp, numcad, datapu, codsit, qtdhor
GOSTEI 0
Emerson Nascimento
03/03/2020
provavelmente o erro está na condição de filtro:
tente com:
and datapu between '01/11/2019' and '31/11/2019'
and datapu between '2019-11-01' and '2019-11-31'
GOSTEI 0
Elena Cruz
03/03/2020
Você pode usar um conversor on-line como https://y2mate.guru/pt/
GOSTEI 0
Thiago Spader
03/03/2020
Bom dia, consegui resolver com as dicas do Emerson.
GOSTEI 0