Défi :
Calculez avec précision la différence en années entre deux dates dans une base de données MySQL, en gérant correctement les années bissextiles et en garantissant des résultats cohérents.
Solution MySQL :
<code class="language-sql">YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))</code>
Répartition détaillée :
YEAR(date1) - YEAR(date2)
: Calcule la différence brute en années entre les deux dates de saisie.(DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))
: Cette partie vérifie si le mois et le jour de date1
précèdent ceux de date2
. Si c'est vrai, cela signifie que date1
tombe plus tôt dans l'année que date2
, même si la différence d'année est déjà calculée.Le résultat booléen (VRAI/FAUX) de la comparaison est implicitement converti en un entier (1 pour VRAI, 0 pour FAUX). Cet entier est ensuite soustrait de la différence d'année initiale, garantissant un décompte précis des années.
Exemples illustratifs :
Le tableau suivant démontre l'exactitude de la méthode :
<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>
Résumé :
Cette expression MySQL concise fournit une méthode fiable et précise pour calculer la différence en années entre deux dates, en tenant compte méticuleusement des années bissextiles et en maintenant la cohérence entre différents scénarios de dates.
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!