una transcurrido tiempo sumar obtener meses mes horas fechas fecha entre diferencia dias calcular año actual mysql date

transcurrido - ¿Cómo obtener la cantidad de días de diferencia entre dos fechas en mysql?



sumar dias a una fecha mysql (5)

Necesito obtener el número de días contenidos en un par de fechas en mysql.

Por ejemplo: Fecha de entrada 12-04-2010 Fecha de salida 15-04-2010 y la diferencia de día sería 3


¿Qué pasa con la función DATEDIFF ?

Citando la página del manual:

DATEDIFF () devuelve expr1 - expr2 expresado como un valor en días de una fecha a la otra. expr1 y expr2 son expresiones de fecha o de fecha y hora. Solo la fecha en que se usan las partes de los valores en el cálculo


En tu caso, usarías:

mysql> select datediff(''2010-04-15'', ''2010-04-12''); +--------------------------------------+ | datediff(''2010-04-15'', ''2010-04-12'') | +--------------------------------------+ | 3 | +--------------------------------------+ 1 row in set (0,00 sec)

Pero tenga en cuenta que las fechas deben escribirse como YYYY-MM-DD , y no como DD-MM-YYYY como las publicó.


Obtener días entre la fecha actual y la fecha de destino

SELECT DATEDIFF(''2019-04-12'', CURDATE()) AS days;

salida

dias

335


Prefiero TIMESTAMPDIFF porque puede cambiar fácilmente la unidad si es necesario.


Tenga en cuenta que si desea contar FULL 24h días entre 2 fechas, la fecha puede devolver valores erróneos.

Como dice la documentación:

Solo la fecha en que se usan las partes de los valores en el cálculo.

lo que resulta en

select datediff(''2016-04-14 11:59:00'', ''2016-04-13 12:00:00'')

devuelve 1 en lugar de 0 esperado.

La solución está utilizando select timestampdiff(DAY, ''2016-04-13 11:00:01'', ''2016-04-14 11:00:00''); (observe el orden de argumentos opuesto en comparación con fechada).

Algunos ejemplos:

  • select timestampdiff(DAY, ''2016-04-13 11:00:01'', ''2016-04-14 11:00:00''); devuelve 0
  • select timestampdiff(DAY, ''2016-04-13 11:00:00'', ''2016-04-14 11:00:00''); devuelve 1
  • select timestampdiff(DAY, ''2016-04-13 11:00:00'', now()); devuelve cuántos días completos han transcurrido desde 2016-04-13 11:00:00 hasta ahora .

Espero que ayude a alguien, porque al principio no es tan obvio por qué los valores devueltos de dateiff parecen ser inesperados o incorrectos.


Use la función DATEDIFF .

Ejemplo de documentación:

SELECT DATEDIFF(''2007-12-31 23:59:59'',''2007-12-30''); -> 1