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 :
- La date de fin. (Dans notre exemple, il s'agit de la
expiration_date
colonne.) - 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.