Hallo,
sorry, bei dem Kindergartenkram (man kommt sich hier manchmal wie auf einer Versammlung der RLP-Linken vor) ging die Loesung total unter.
Also, das Query liefert den Abstand(Alter) zu einem gegebenen Datum in Jahren, Monaten und Tagen, wobei der "Rest des Monates" mitunter auch benoetigt wird:
SELECT geb,
IF ((DAYOFYEAR(CURDATE()) > DAYOFYEAR(geb)),
(YEAR(CURDATE()) - YEAR(geb)),
(YEAR(CURDATE()) - YEAR(geb) - 1)) AS Jahre,
IF ((DAYOFYEAR(CURDATE()) > DAYOFYEAR(geb)),
(MONTH(CURDATE()) - MONTH(geb)),
(12 - (MONTH(geb) - MONTH(CURDATE())))) AS Monate,
IF ((DAY(CURDATE()) > DAY(geb)),
(DAY(CURDATE()) - DAY(geb)),
(DAY(LAST_DAY(geb)) - DAY(geb)) + DAY(CURDATE())) AS Tage
FROM test.persons ORDER BY DAY(geb) ASC;
Nur, falls das mal jemand braucht ... ;-)
Gruss und Dank
Norbert