Trabajando con postgres y necesito convertir el total de minutos al formato de 1h 1m.
Estoy haciendo esto a través del siguiente código
replace( (119 / 60 + (119 % 60) / 100.0)::text, '.', 'h ' ) + 'm'que devuelve 1h 59000000000000000000m
119 es solo una cantidad de minutos de ejemplo que he agregado, pero esto se establecería en una consulta más grande que haría
(accumulated_minutes / 60 + (accumulated_minutes % 60) / 100.0)::text,¿Hay alguna manera de convertir esto en texto sin agregar la precisión adicional?
¡Deje que la base de datos haga el trabajo pesado por usted! Puede convertir la cantidad de minutos en un tipo de datos de interval y usar to_char() para formatear:
to_char(make_interval(mins => accumulated_minutes), 'hh24"h" mi"m"') select to_char(make_interval(mins => 119), 'hh24"h" mi"m"') val| valor | | :------ | | 01h 59m |
Si desea suprimir los 0 iniciales en horas y minutos, entonces:
to_char(make_interval(mins => accumulated_minutes), 'fmhh24"h" fmmi"m"') valPuede intentar primero convertir el cociente o el módulo en un número entero, luego convertirlo en texto después de eso, por ejemplo
SELECT (119 / 60)::int::text || 'h ' || (119 % 60)::int::text || 'm'; Esto genera 1h 59m .