Это можно сделать несколькими способами, но такого готового решения в улье нет.
1) с использованием datediff ():
Эта функция возвращает количество дней между два дня, поэтому придется разделить вывод функции на 365,25, чтобы получить вывод. (делится на 365,25 для учета високосного года)
select cast(datediff(current_date, DOB) / 365.25 as int) as age;
2) с использованием month_between ():
Эта функция возвращает разницу месяцев между двумя днями, поэтому необходимо разделить вывод с 12, чтобы получить ожидаемый результат.
select cast(months_between(current_date, DOB) / 12 as int) as age;
3) с использованием UDF:
Если вы ищете возраст в формате года, месяца и дня , то это комплексный подход с использованием функций улья. Будет полезно написать пользовательскую функцию udf, которая принимает dob в качестве входных данных и возвращает возраст в формате YY
лет MM
месяцев dd
дней.
Для ссылки на функции даты, пожалуйста, обратитесь к документация улья .