Necesito obtener el número de días contenidos en un par de fechas en mysql.¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
Por ejemplo: Llegada fecha 12-04-2010 15-04-2010 Fecha de la salida y la diferencia día sería 3
Necesito obtener el número de días contenidos en un par de fechas en mysql.¿Cómo obtener el número de días de diferencia entre dos fechas en mysql?
Por ejemplo: Llegada fecha 12-04-2010 15-04-2010 Fecha de la salida y la diferencia 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. Sólo las partes de la fecha de los valores se utilizan en el cálculo
En su caso, tendrá que utilizar:
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 las fechas deben ser escritos como YYYY-MM-DD
y no DD-MM-YYYY
como has publicado.
Utilice la función DATEDIFF()
.
Ejemplo de documentación:
SELECT DATEDIFF('2007-12-31 23:59:59','2007-12-30');
-> 1
prefiero TIMESTAMPDIFF porque se puede cambiar fácilmente la unidad si es necesario.
Nota Si desea contar días 24h COMPLETA entre 2 fechas, datediff puede devolver valores incorrectos para usted.
Como documentación indica:
Solamente las partes de la fecha de los valores se utilizan en el cálculo.
que resulta en
select datediff('2016-04-14 11:59:00', '2016-04-13 12:00:00')
devuelve 1 en lugar de esperar 0.
solución es utilizar select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
(nota orden opuesto de argumentos que comparan a datediff).
Algunos ejemplos:
select timestampdiff(DAY, '2016-04-13 11:00:01', '2016-04-14 11:00:00');
devuelve 0select timestampdiff(DAY, '2016-04-13 11:00:00', '2016-04-14 11:00:00');
devuelve 1select timestampdiff(DAY, '2016-04-13 11:00:00', now());
vuelve cuántos días llena 24h ha pasado desde 13/04/2016 11:00 : 00 hasta ahora.Espero que ayude a alguien, porque al principio no es tan obvio por qué los valores devueltos dateda que parece ser inesperado o incorrecto.
Sí, me olvidé del formato de fecha cuando hice la pregunta; p gracias – Audel
P.S. AAAA-MM-DD es el estándar ISO 8601, por lo que todos deberían usar esto. Muy practico. –
** Nota **: El primer argumento debe ser mayor que el segundo argumento para el método 'datediff()', de lo contrario devolverá un valor negativo. – Shashanth