Skip to main content
Announcements
Global Transformation Awards! Applications are now open. Submit Entry
cancel
Showing results for 
Search instead for 
Did you mean: 
luis_bisval
Contributor III
Contributor III

Convertir hora formato string a Time

Buenas tardes.

Estimados, sigo trabajando en mi app de control de asistencia, con la siguiente información.

Cédula

Fecha

H_Entrada

H_Salida

Total de Horas

15664062

2016-04-25

07:03:49

18:50:01

11:46:12

15664062

2016-04-26

13:29:05

17:56:43

04:27:38

15664062

2016-04-27

07:14:01

17:46:24

10:32:23

16429625

2016-04-26

07:10:51

17:35:31

10:24:40

16429625

2016-04-27

07:16:08

17:04:14

09:48:06

18096033

2016-04-25

06:04:20

16:50:55

10:46:35

18096033

2016-04-26

06:04:04

16:49:35

10:45:31

18096033

2016-04-27

05:53:17

15:35:21

09:42:04

El resultado del campo "Total de Horas" lo obtengo de la siguiente expresión Interval(H_Salida-H_Entrada), sin embargo el resultado es en formato "visual" de horas pero a nivel de datos es string: ¿Como hago para que ese resultado tenga el formato Time?

Lo necesito en formato Time ya que estoy creando un gráfico con una expresión de Cumplimiento de la siguiente manera:

Aggr(sum(If([Total de Horas] >='09:45' and H_Entrada<=MakeTime(8) and H_Salida>=MakeTime(17),1,0)),Mes)


También lo coloque de la siguiente forma:


Aggr(sum(If([Total de Horas] >=MakeTime(9,45) and H_Entrada<=MakeTime(8) and H_Salida>=MakeTime(17),1,0)),Mes)

Sin embargo no obtengo ningún resultado.

Agradezco de antemano su colaboración

15 Replies
sorrakis01
Specialist
Specialist

Hola,

Si ves que te complicas haz un precedent LOAD, es decir carga el SQL y antes del Select metele un LOAD con los campos que quieres y los que quieres transformar.... es decir:

Load Fecha,

     Año,

     entrada,

     salida,

     Cédula,

     Timestamp([H_Entrada],'hh:mm:ss') as H_Entrada,

     Timestamp([H_Salida],'hh:mm:ss') as H_Salida,    

     Timestamp(Timestamp(H_Salida,'hh:mm:ss')-Timestamp(H_Entrada,'hh:mm:ss'),'hh:mm:ss') as Total_de_Horas

select

  Cedula as Cédula,

  entrada,

  salida,

  convert(date,Entrada,105) as Fecha,

  DATEPART(year, Entrada) as Año,

  substring(convert(varchar(20), Entrada, 9), 13, 5) + ' ' +

  substring(convert(varchar(30), Entrada, 9), 25, 2) as [Hora Entrada],

  substring(convert(varchar(20), Salida, 9), 13, 5) + ' ' +

  substring(convert(varchar(30), Salida, 9), 25, 2) as [Hora Salida],

  convert(time(0), Entrada) as H_Entrada,

  convert(time(0), Salida) as H_Salida,

    DATEPART(month, Entrada) as Mes,

  DATEPART(WEEK, Entrada) as Semana,

  DATEPART(WEEKDAY, Entrada) as [Día de la Semana],

    DATEPART(day, Entrada) as Día

from InOut

where Entrada between '20160201' and '20160430';

Prueba y nos comentas aunque intenta trabajar con qvds...... que te irá mejor todo

Saludos,

luis_bisval
Contributor III
Contributor III
Author

Hola jordi, cuando recargo la app solo me trae los datos del Load y no los del select

OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=sa;Initial

Load Fecha,

     Año,

     entrada,

     salida,

     Cédula,

     Timestamp([H_Entrada],'hh:mm:ss') as H_Entrada,

     Timestamp([H_Salida],'hh:mm:ss') as H_Salida,   

     Timestamp(Timestamp(H_Salida,'hh:mm:ss')-Timestamp(H_Entrada,'hh:mm:ss'),'hh:mm:ss') as Total_de_Horas;

select

  Cedula as Cédula,

  entrada,

  salida,

  convert(date,Entrada,105) as Fecha,

  DATEPART(year, Entrada) as Año,

  substring(convert(varchar(20), Entrada, 9), 13, 5) + ' ' +

  substring(convert(varchar(30), Entrada, 9), 25, 2) as [Hora Entrada],

  substring(convert(varchar(20), Salida, 9), 13, 5) + ' ' +

  substring(convert(varchar(30), Salida, 9), 25, 2) as [Hora Salida],

  convert(time(0), Entrada) as H_Entrada,

  convert(time(0), Salida) as H_Salida,

    DATEPART(month, Entrada) as Mes,

  DATEPART(WEEK, Entrada) as Semana,

  DATEPART(WEEKDAY, Entrada) as [Día de la Semana],

    DATEPART(day, Entrada) as Día

from InOut

where Entrada between '20160201' and '20160515';

Estoy comenzando con qlikview y desconozco de mucas cosas, así que todas las recomendaciones que me hagan bienvenidas sean.

sorrakis01
Specialist
Specialist

Hola,

Añade en el LOAD los campos que te falten del SELECT... el LOAD lo que hace es transformar y cargar los campos que tu quieras del SELECT. Si pusieras * te los cargaría todos..... pero necesitas transformar algunos campos. Mira algun ejemplo de Precedent LOAD

Saludos,

Joaquin_Lazaro
Partner - Specialist II
Partner - Specialist II

Hola Luis:

Te subo tu script actualizado con un LOAD antes de la SELECT.

La sentencia LOAD te permite manipular los campos devueltos por tu BBDD con funciones propias de QlikView, es en esa parte donde tienes que incluir las sugerencias que tenemos realizado Jordi y yo mismo

Saludos

Joaquín

luis_bisval
Contributor III
Contributor III
Author

Muchísimas gracias, me verán muy seguido por este foro.

sorrakis01
Specialist
Specialist

Hola Luis,

Vuelve cuando quieras para eso está...

Un abrazo