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_datecolumna.) - La fecha de inicio. (En nuestro ejemplo, es el
purchase_datecolumna.)
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.