Maison > base de données > tutoriel mysql > Comment calculer efficacement la différence d'âge en années entre deux dates à l'aide de MySQL ?

Comment calculer efficacement la différence d'âge en années entre deux dates à l'aide de MySQL ?

Susan Sarandon
Libérer: 2025-01-09 18:17:41
original
172 Les gens l'ont consulté

How to Efficiently Calculate the Age Difference in Years Between Two Dates Using MySQL?

Calculer la différence d'année en utilisant la date MySQL

Déterminer la différence d'année entre deux dates est une tâche courante dans MySQL. Cet article propose une solution efficace à expression unique qui prend en compte les années bissextiles.

Énoncé du problème :

Étant donné deux dates au format suivant : 'AAAA-MM-JJ', nous devons calculer la différence d'année. Par exemple :

  • 20/07/2011 - 18/07/2011 => 0 ans
  • 20/07/2011 - 20/07/2010 => 1 an
  • 2011-06-15 - 2008-04-11 => 3 ans
  • 2011-06-11 - 2001-10-11 => 9 ans

Solution :

<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Copier après la connexion

Instructions :

  • YEAR(date1) - YEAR(date2) Calculez la différence d'année.
  • DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d') Compare les parties mois et jour de deux dates. L’expression est évaluée à vrai (1) si le jour du mois de date1 est inférieur au jour du mois de date2, et à faux (0) sinon.
  • Soustraire une valeur vraie ou fausse (1 ou 0) ajustera le résultat en conséquence.

Exemple :

La requête suivante calcule la différence d'année pour un scénario de test donné :

<code class="language-sql">SELECT date1, date2,
YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) AS diff_years
FROM (
    SELECT '2011-07-20' AS date1, '2011-07-18' AS date2 UNION ALL
    SELECT '2011-07-20', '2010-07-20' UNION ALL
    SELECT '2011-06-15', '2008-04-11' UNION ALL
    SELECT '2011-06-11', '2001-10-11' UNION ALL
    SELECT '2007-07-20', '2004-07-20'
) AS dates;</code>
Copier après la connexion

Sortie :

<code>+------------+------------+------------+
| date1      | date2      | diff_years |
+------------+------------+------------+
| 2011-07-20 | 2011-07-18 |          0 |
| 2011-07-20 | 2010-07-20 |          1 |
| 2011-06-15 | 2008-04-11 |          3 |
| 2011-06-11 | 2001-10-11 |          9 |
| 2007-07-20 | 2004-07-20 |          3 |
+------------+------------+------------+</code>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal