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