Просто используйте fhoffa.x.age()
:
SELECT fhoffa.x.age('1989-11-9')
, fhoffa.x.age('1989-11-9 23:01:01 America/Los_Angeles')
# 30.21917808219178
# 30.216438356164385
Поскольку у вас есть только строка с годом рождения, вы можете сделать это:
SELECT fhoffa.x.age(CONCAT(year_from_db, '-01-01'))
FROM (SELECT '1989' year_from_db)
# 31.076712328767123
Вы можете использовать эту функцию свободно, я создал его с помощью этого кода:
CREATE OR REPLACE FUNCTION `fhoffa.x.age`(birth ANY TYPE) AS (
DATE_DIFF(CURRENT_DATE(), DATE(TIMESTAMP(birth)), YEAR)
# the next line gives you the fraction of this year in days/365
+ DATE_DIFF(CURRENT_DATE() , DATE_ADD(DATE(TIMESTAMP(birth)), INTERVAL (DATE_DIFF(CURRENT_DATE(), DATE(TIMESTAMP(birth)), YEAR)) YEAR), DAY) / 365
);