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.

Diferencia en sellos de fecha y hora en Impala.

Quiero una consulta que muestre la diferencia de tiempo en meses o días en Impala.

¿Cómo puedo hacer esto?

inicio 2017-11-29 19:45:00 – fin 2018-11-29 21:30:00

Sé que month_between y datediff muestran el mes de diferencia pero, ¿cómo hago para que también tome en cuenta el año al contar los días/meses?

Para el ejemplo anterior, quiero mostrar cualquiera de estas opciones:

month_between – 12.2 meses – equivalente al cálculo del mes del timestamp – podría estar un poco desviado ya que lo hice a mano / 30 días

days_between – 366 días

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la diferencia de tiempo entre dos marcas de tiempo en Impala, se pueden utilizar las funciones month_between y days_between. Estas funciones solo considerarán la diferencia en días o meses y no tomarán en cuenta el año. Sin embargo, se puede extraer el año de la marca de tiempo e incluirlo en el cálculo.

    Por ejemplo, para calcular la diferencia de tiempo en meses, se puede utilizar la siguiente consulta:

    SELECT ABS(12*(YEAR(end)-YEAR(start)) + (MONTH(end)-MONTH(start)) + (DAY(end)-DAY(start))/30.0) AS months_diff
    FROM your_table
    

    Esta consulta calcula la diferencia en años entre las marcas de tiempo de inicio y fin, la multiplica por 12 para obtener el total de meses, suma la diferencia en meses y días, y luego divide la diferencia de días entre 30 para obtener una fracción de mes. La función ABS() se utiliza para obtener el valor absoluto del resultado.

    Para el ejemplo dado, el resultado será de 12.2 meses.

    Para calcular la diferencia de tiempo en días, se puede utilizar la siguiente consulta:

    SELECT DATEDIFF(end, start) AS days_diff
    FROM your_table
    

    Esta consulta simplemente utiliza la función DATEDIFF para obtener la diferencia en días entre las marcas de tiempo de inicio y fin.

    Para el ejemplo dado, el resultado será de 366 días.

Comments are closed.