Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment trouver le nombre de jours entre deux dates dans MySQL

Problème :

Vous souhaitez obtenir la différence, en jours, entre deux dates dans une base de données MySQL.

Exemple :

Notre base de données a une table nommée food avec des données dans les colonnes id , name , purchase_date , et expiration_date .

identifiant nom date_achat expiration_date
1 pain 2019-07-20 2019-08-22
2 beurre 2018-07-30 2019-08-10
3 lait 2019-01-12 2019-01-13
4 yaourt 2019-02-25 2019-02-24

Pour chaque produit alimentaire, obtenons le nom du produit et le nombre de jours entre sa date de péremption et sa date d'achat.

Solution :

Nous utiliserons le DATEDIFF() une fonction. Voici la requête que vous écririez :

SELECT
  name,
  DATEDIFF(expiration_date, purchase_date) AS days
FROM food;

Voici le résultat de la requête :

nom jours
pain 33
beurre 376
lait 1
yaourt -1

Discussion :

Utilisez le DATEDIFF() fonction pour récupérer le nombre de jours entre deux dates dans une base de données MySQL. Cette fonction prend deux arguments :

  1. La date de fin. (Dans notre exemple, il s'agit de la expiration_date colonne.)
  2. La date de début. (Dans notre exemple, il s'agit de la purchase_date colonne.)

Ces arguments peuvent être des valeurs date/datetime, des expressions qui renvoient des valeurs date/datetime ou des colonnes de type datetime ou date.

Cette fonction soustrait la date de début de la date de fin et renvoie le nombre de jours sous forme d'entier. Dans notre exemple, beurre a été acheté le « 2018-07-30 », mais sa date d'expiration était le « 2019-08-10 » ; après achat, il pouvait être consommé pendant 376 jours. Notez que le yaourt a été acheté en tant que produit périmé :la différence en jours est de -1 et sa date d'achat est postérieure à sa date de péremption.