Sobre la base de un resumen de todas las respuestas y una búsqueda en Google, creo que hay cuatro formas casi similares a escribirlo:
1)
TIMESTAMPDIFF(MONTH, Start_date, End_date) AS Period
Por ej.
TIMESTAMPDIFF(MONTH, MIN(r.rental_date), MAX(r.rental_date)) AS Period
2)
PERIOD_DIFF(date_format(now(), '%Y%m'), date_format(time, '%Y%m')) as months
O
PERIOD_DIFF(date_format(End_date(), '%Y%m'), date_format(Start_date, '%Y%m')) as months
P. ej
PERIOD_DIFF(date_format(MAX(r.rental_date), '%Y%m'), date_format(MIN(r.rental_date), '%Y%m')) as months
3)
PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM NOW()), EXTRACT(YEAR_MONTH FROM time)) AS months
O
PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM End_date()), EXTRACT(YEAR_MONTH FROM Start_date)) AS months
P. ej
PERIOD_DIFF(EXTRACT(YEAR_MONTH FROM MAX(r.rental_date)), EXTRACT(YEAR_MONTH FROM MIN(r.rental_date))) as Months
4)
PERIOD_DIFF(concat(year(d1),if(month(d1)<10,'0',''),month(d1)), concat(year(d2),if(month(d2)<10,'0',''),month(d2))) as Months**
P. ej
PERIOD_DIFF(
concat(year(MAX(r.rental_date)),if(month(MAX(r.rental_date))<10,'0',''),month(MAX(r.rental_date))),
concat(year(MIN(r.rental_date)),if(month(MIN(r.rental_date))<10,'0',''),month(MIN(r.rental_date)))
) as Months
¿Puede darnos un ejemplo de la producción que espera? Por ejemplo, hoy es el 12 de abril y mi cumpleaños es el 14 de abril o el 12 de mayo o el 15 de mayo. ¿Qué valores esperarías recibir de la consulta? – Teetrinker
Duplicado: http://stackoverflow.com/questions/288984/the-difference-in-months-between-dates-in-mysql – manji
La fecha de la columna DateOfService siempre será mayor que la columna BirthDate. Entonces, debo restar BirthDate de DateOfService y calcular la diferencia en meses. – Awan