Рассчитать возраст от DOB - PullRequest
       46

Рассчитать возраст от DOB

0 голосов
/ 28 апреля 2020

Я использую HiveQL, и мне нужно вычислить возраст, просто используя столбец Дата рождения, но проблема в том, что GetDate не работает, а Current_Date() работает. Пример, который я пробую, выглядит следующим образом:

datediff(yy,Dateofbirthcol,current_date()) As Age.

Столбец DOB выглядит как 1988-12-14.

Ответы [ 3 ]

2 голосов
/ 28 апреля 2020

Попробуйте один из следующих вариантов.

  1. floor(datediff(to_date(from_unixtime(unix_timestamp())), Dateofbirthcol) / 365.25)

  2. datediff(now(), Dateofbirthcol) / 365.25

0 голосов
/ 30 апреля 2020

Это можно сделать несколькими способами, но такого готового решения в улье нет.

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 дней.

Для ссылки на функции даты, пожалуйста, обратитесь к документация улья .

0 голосов
/ 28 апреля 2020

Не используйте unix_timestamp (), поскольку оно не определено c. Использовать current_date:

 datediff(current_date, Dateofbirthcol) / 365.25
...