Le calcul de l'intervalle d'un mois entre deux champs de date pose un problème commun défi dans MySQL. Une approche consiste à convertir les dates en horodatages Unix, en les divisant par le nombre de secondes dans un mois (2 592 000) et en les arrondissant au nombre entier le plus proche.
Cependant, une solution plus efficace existe : le TIMESTAMPDIFF( ) fonction. TIMESTAMPDIFF() vous permet de comparer deux valeurs TIMESTAMP, DATETIME ou même DATE et de spécifier l'unité de temps souhaitée pour la différence.
Pour obtenir la différence sur un mois, spécifiez MOIS comme unité dans le premier paramètre :
SELECT TIMESTAMPDIFF(MONTH, '2012-05-05', '2012-06-04'); -- Outputs: 0
TIMESTAMPDIFF() prend automatiquement en compte les différentes longueurs de mois et prend en compte les années bissextiles, éliminant ainsi le besoin de date manuelle manipulation.
Pour plus de précision, vous pouvez incorporer la formule suivante :
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 fournira une représentation décimale de la différence sur un mois, permettant une plus grande granularité.
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!