Maison > base de données > tutoriel mysql > Comment calculer avec précision la différence d'année entre deux dates dans MySQL ?

Comment calculer avec précision la différence d'année entre deux dates dans MySQL ?

DDD
Libérer: 2025-01-09 18:39:41
original
575 Les gens l'ont consulté

How to Accurately Calculate the Year Difference Between Two Dates in MySQL?

Calcul des différences d'année entre les dates dans MySQL

Ce guide présente une méthode précise pour calculer la différence d'année entre deux dates dans une base de données MySQL. L'expression SQL suivante fournit un calcul précis, gérant les complexités potentielles des années bissextiles :

YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d'))
Copier après la connexion

Cette expression fonctionne comme suit :

  1. Différence annuelle : YEAR(date1) - YEAR(date2) calcule la différence annuelle initiale.

  2. Comparaison mois/jour : DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d') compare les composants mois et jour des deux dates. Cette comparaison détermine si date1 tombe plus tôt dans l'année que date2.

  3. Ajustement pour les années bissextiles : MySQL interprète le résultat de la comparaison comme 1 (vrai) ou 0 (faux). Soustraire ce résultat de la différence de l'année initiale garantit un calcul précis, en ajustant les cas où date1 est chronologiquement plus tôt dans la même année que date2.

Exemple :

Illustrons avec des exemples de données :

CREATE TABLE so7749639 (date1 DATE, date2 DATE);
INSERT INTO so7749639 VALUES
('2011-07-20', '2011-07-18'),
('2011-07-20', '2010-07-20'),
('2011-06-15', '2008-04-11'),
('2011-06-11', '2001-10-11'),
('2007-07-20', '2004-07-20');
Copier après la connexion

La requête :

SELECT date1, date2,
YEAR(date1) - YEAR(date2) - (DATE_FORMAT(date1, '%m%d') < DATE_FORMAT(date2, '%m%d')) AS diff_years
FROM so7749639;
Copier après la connexion

Rend les différences d'année correctes :

<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

Cette approche garantit des calculs précis de différence d'année quelles que soient les dates spécifiques impliquées.

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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal