Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Hola, tengo una duda con los formatos texto de qlikview, me gustaria saber si alguien puede echarme una mano.
Resulta que tengo una campo de tipo texto donde tengo tiempos en horas, minutos y segundos. El formato es algo como esto:"12h 55m 23s" o "1h 2m 5s", Me gustaria poder convertir ese entero a segundos y realizar una operacion, pero no entiendo bien como hacerlo. He estado mirando y con las funciones mid() e index() se puede hacer algo asi, pero necesito ayuda, ya que no consigo que saque lo que necesito!!
Alguien sabe como podria hacerlo?
un saludo!
Hola,
No es que se "maree" sino que si el formato no es consistente (siempre "1h 2m 3s", sino "1h 2m" o "2m 3s" o "3s"), el primer dígito siempre es interpretado como horas, el siguiente como minutos y el siguiente como segundos, en la función que te he pasado arriba.
No obstante, puedes aplicar condicionales siguiendo la misma lógica, que deberían devolver los resultados correctos (utilizo una variable vData en lugar de la cadena completa de texto por comodidad):
=Interval(
If(Index(vData, 'h'), PurgeChar(Replace(Replace(vData, 'h ', ':'), 'm ', ':'), 's'),
If(Index(vData, 'm'), '00:' & PurgeChar(Replace(vData, 'm ', ':'), 's'),
'00:00:' & PurgeChar(vData, 's')))
, 'ss')
Espero que te sirva la idea para avanzar.
Miguel
Hola,
Probablemente algo como lo siguiente te funcionará:
=Interval(PurgeChar(Replace(Replace('12h 55m 23s', 'h ', ':'), 'm ', ':'), 's'), 'ss')
Espero que te sirva.
Miguel
Hoola Miguel, gracias por contestar con tanta celeridad, pero la funcion que has puesto no hace lo que busco. Veras, con el campo "21s" me devuelve el valor 1814400, y con el campo "8m 21s" me devuelve el valor 30060.
No se si quizas la funcion que me has pasado se marea cuando no hay horas. puede ser?
Hola,
No es que se "maree" sino que si el formato no es consistente (siempre "1h 2m 3s", sino "1h 2m" o "2m 3s" o "3s"), el primer dígito siempre es interpretado como horas, el siguiente como minutos y el siguiente como segundos, en la función que te he pasado arriba.
No obstante, puedes aplicar condicionales siguiendo la misma lógica, que deberían devolver los resultados correctos (utilizo una variable vData en lugar de la cadena completa de texto por comodidad):
=Interval(
If(Index(vData, 'h'), PurgeChar(Replace(Replace(vData, 'h ', ':'), 'm ', ':'), 's'),
If(Index(vData, 'm'), '00:' & PurgeChar(Replace(vData, 'm ', ':'), 's'),
'00:00:' & PurgeChar(vData, 's')))
, 'ss')
Espero que te sirva la idea para avanzar.
Miguel
Hace exactamente lo que necesitaba.
Muchas gracias!!!