Calcul précis de la différence de mois dans MySQL
MySQL fournit une fonction indispensable, TIMESTAMPDIFF(), pour calculer le nombre de mois entre deux dates. Il élimine les complications associées aux différentes longueurs de mois et aux années bissextiles.
SELECT TIMESTAMPDIFF(MONTH, '2012-03-08', '2012-08-01'); -- Outputs: 4
Amélioration de la précision
Pour une plus grande précision, une approche plus complexe peut être utilisée :
SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH )
Cette formule ajoute de la précision en calculant les jours restants (après la différence mensuelle) sous forme de fraction de mois.
Exemples
WITH startdate AS '2012-03-08', enddate AS '2012-04-15' SELECT TIMESTAMPDIFF(MONTH, startdate, enddate) + DATEDIFF( enddate, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ) / DATEDIFF( startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) + 1 MONTH, startdate + INTERVAL TIMESTAMPDIFF(MONTH, startdate, enddate) MONTH ); -- Outputs: 1.2333
Ce résultat indique qu'il y a 1 mois et environ 23,33% d'un mois de différence entre les deux 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!