sql >> Base de Datos >  >> RDS >> Mysql

Cómo encontrar el número de días entre dos fechas en MySQL

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:

  1. La fecha de finalización. (En nuestro ejemplo, es la expiration_date columna.)
  2. 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.