Principales respuestas
Consultar datos mostrar minutos en horas

Pregunta
-
Buen dia
Tengo en una tabla las siguientes columnas tiempo_inicio, tiempo_medio, tiempo_final, son de tipo entero y representan minutos, cuando hago una consulta,
si por ejemplo tengo los siguientes datos en mi tabla Tiempos
tiempo_inicio tiempo_medio tiempo_final
303 30 400
Yo esperaria que con la siguiente consulta
SELECT tiempo_inicio/60 as tiempo_inicio , tiempo_medio/60 as tiempo_medio, tiempo_final/60 as tiempo_final, horas_totales from Tiempos
Aparecieran 5.05, .5, y 66.6 respectivamente pero en cambio me aparecen asi:
tiempo_inicio tiempo_medio tiempo_final
5 0 67
Como puedo pasar los minutos a horas sin que se redondeen los valores?
Respuestas
-
Hola Emma Grz:
Tienes que convertir el valor int en un tipo de valor con decimales, para que la operación no se convierta a int:
create table #tiempos(tiempo_inicio int, tiempo_medio int, tiempo_final int); insert into #tiempos ([tiempo_inicio] , [tiempo_medio] , [tiempo_final] ) values ( 303, 30, 400 ); SELECT [tiempo_inicio]* (1.0) / 60 as [tiempo_inicio] , [tiempo_medio] * (1.0) / 60 as [tiempo_medio] , [tiempo_final] * (1.0) / 60 as [tiempo_final] from #Tiempos; drop table #tiempos;
Salida
Luego ya puedes darle formato a los números, si quieres, quitándoles decimales, o convirtiendo a decimal o numeric.
Decimal y Numeric
Round
https://docs.microsoft.com/es-es/sql/t-sql/functions/round-transact-sql?view=sql-server-ver15
- Editado Javi Fernández F sábado, 15 de febrero de 2020 6:31
- Marcado como respuesta Emma Grz martes, 18 de febrero de 2020 14:45
Todas las respuestas
-
Hola Emma Grz:
Tienes que convertir el valor int en un tipo de valor con decimales, para que la operación no se convierta a int:
create table #tiempos(tiempo_inicio int, tiempo_medio int, tiempo_final int); insert into #tiempos ([tiempo_inicio] , [tiempo_medio] , [tiempo_final] ) values ( 303, 30, 400 ); SELECT [tiempo_inicio]* (1.0) / 60 as [tiempo_inicio] , [tiempo_medio] * (1.0) / 60 as [tiempo_medio] , [tiempo_final] * (1.0) / 60 as [tiempo_final] from #Tiempos; drop table #tiempos;
Salida
Luego ya puedes darle formato a los números, si quieres, quitándoles decimales, o convirtiendo a decimal o numeric.
Decimal y Numeric
Round
https://docs.microsoft.com/es-es/sql/t-sql/functions/round-transact-sql?view=sql-server-ver15
- Editado Javi Fernández F sábado, 15 de febrero de 2020 6:31
- Marcado como respuesta Emma Grz martes, 18 de febrero de 2020 14:45
-
Basta con que uno de los dos operandos que aparecen en la división sea de coma flotante para que la división se haga con decimales. La forma más sencilla de conseguirlo es escribir 60.0 en lugar de 60:
SELECT tiempo_inicio/60.0 as tiempo_inicio , tiempo_medio/60.0 as tiempo_medio, tiempo_final/60.0 as tiempo_final, horas_totales from Tiempos