Před chvilkou jsem se pokoušel z MySQL databáze vytáhnout stáří některých položek. Nicméně nestačilo mi dostat údaj v letech, což lze podle MySQL dokumentace pro přesný výpočet provést přibližně takto:
SELECT (YEAR(CURDATE()) - YEAR(my_date)) - (RIGHT(CURDATE(),5) < RIGHT(my_date,5))
AS age
FROM my_table
Potřeboval jsem údaj v měsících. Už jsem se nořil do výpočtů, ve kterých se to hemžilo dvanáctkami, roky a aktuálními měsíci, když v tom spočinul můj zrak na prosté, ale účinné funkci PERIOD_DIFF. Ta vrací počet měsíců mezi zadanými obdobími. Bohužel období musí být zadána – z mě neznámého důvodu – buď ve formátu YYMM, nebo YYYYMM a nemohou tak být použita celá data. Dokonce se zadávají obskurně číselně (bez apostrofů):
SELECT PERIOD_DIFF(200702, 0603);
-- dává 11
Jak jsem funkci nakonec použil já:
SELECT
PERIOD_DIFF(DATE_FORMAT(CURDATE(), '%y%m'), DATE_FORMAT(my_date, '%y%m'))
AS age_in_months
FROM my_table
Máte-li lepší řešení, rád si jej přečtu v komentářích.