es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo encontrar la diferencia entre dos marcas de tiempo en Talend HI

Soy nuevo en Talend y quiero encontrar la diferencia entre las dos marcas de tiempo.
Tengo dos columnas start_time y end_time.
Quiero crear una tabla en el destino que muestre la diferencia entre ambas marcas de tiempo, específicamente quiero mostrar horas, minutos y segundos.
Además, quiero que la hora sea en formato de marca de tiempo, no en formato de cadena. ¿Cómo puedo lograr esto?

start_time- 2021-06-18 08:27:52.000000
end_time- 2021-06-18 08:29:59.000000

He intentado-
crear una variable ‘ms’ de tipo long en el tmap = TalendDate.diffDate(row181.start_time,row181.end_time,"mm")
para convertirlo a hh:mm:ss

String.format("%02d:%02d:%02d.%d", (Var.ms / (1000 * 60 * 60)) % 24, (Var.ms / (1000 * 60)) % 60, (Var.ms / 1000) % 60, Var.ms % 1000)

Si hago la tabla como una cadena, obtengo este error:

la columna "call_duration" es de tipo bigint pero la expresión es de tipo character varying

La expresión anterior de T-map también devuelve cero y tengo que usar long en el tipo de columna de destino, pero quiero un tipo de dato de fecha.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para calcular la diferencia entre dos marcas de tiempo en Talend y mostrar el resultado en formato de horas, minutos y segundos, siga estos pasos:

    1. Arrastre y suelte un componente tMap en su trabajo de Talend.
    2. Conecte su componente de origen que contiene las marcas de inicio y fin a el componente tMap.

    3. En el componente tMap, cree una nueva columna de salida de tipo Fecha/Hora y nómbrela algo como “duración”.

    4. En el Editor de Expresiones para la nueva columna, utilice la siguiente fórmula para calcular la duración del tiempo:

      (TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", row.start_time).getTime() - TalendDate.parseDate("yyyy-MM-dd HH:mm:ss", row.end_time).getTime()) / 1000

      Esta fórmula calculará la diferencia entre las dos marcas de tiempo en milisegundos.

    5. Una vez que tenga la duración en milisegundos, puede convertirla a formato de horas, minutos y segundos creando otra columna de salida de tipo String y utilizando la siguiente fórmula:

      String.format("%02d:%02d:%02d", (row.duration / 3600) % 24, (row.duration / 60) % 60, row.duration % 60)

      Esta fórmula convertirá la duración de milisegundos a formato de horas, minutos y segundos.

    6. Por último, mapee la nueva columna de salida “duración” en la columna de destino donde desea almacenar la duración en formato de marca de tiempo.

    Siguiendo estos pasos, debería poder calcular la diferencia entre dos marcas de tiempo y mostrar el resultado en formato de horas, minutos y segundos en una columna de marca de tiempo en su destino.

Comments are closed.