Problema:
Le gustaría obtener la diferencia, en días, entre dos fechas en una base de datos MySQL.
Ejemplo:
Nuestra base de datos tiene una tabla llamada food
con datos en las columnas id
, name
, purchase_date
y expiration_date
.
id | nombre | fecha_de_compra | fecha_de_caducidad |
---|---|---|---|
1 | pan | 2019-07-20 | 2019-08-22 |
2 | mantequilla | 2018-07-30 | 2019-08-10 |
3 | leche | 2019-01-12 | 2019-01-13 |
4 | yogur | 2019-02-25 | 2019-02-24 |
Para cada producto alimenticio, obtengamos el nombre del producto y la cantidad de días entre su vencimiento y las fechas de compra.
Solución:
Usaremos el DATEDIFF()
función. Esta es la consulta que escribirías:
SELECT name, DATEDIFF(expiration_date, purchase_date) AS days FROM food;
Este es el resultado de la consulta:
nombre | días |
---|---|
pan | 33 |
mantequilla | 376 |
leche | 1 |
yogur | -1 |
Discusión:
Usa el DATEDIFF()
función para recuperar el número de días entre dos fechas en una base de datos MySQL. Esta función toma dos argumentos:
- La fecha de finalización. (En nuestro ejemplo, es la
expiration_date
columna.) - La fecha de inicio. (En nuestro ejemplo, es el
purchase_date
columna.)
Estos argumentos pueden ser valores de fecha/fechahora, expresiones que devuelven valores de fecha/fechahora o columnas del tipo de datos fechahora o fecha.
Esta función resta la fecha de inicio de la fecha de finalización y devuelve el número de días como un número entero. En nuestro ejemplo, mantequilla se compró el '2018-07-30', pero su fecha de vencimiento era '2019-08-10'; después de la compra, se podía comer durante 376 días. Observe que el yogur se compró como un producto caducado:la diferencia en días es -1 y su fecha de compra es posterior a su fecha de caducidad.