根据出生年月日计算年龄

问题描述 投票:0回答:1

我正在使用HiveQL,我需要使用出生日期列来计算年龄,但问题在于 GetDate 行不通 Current_Date() 的。我正在尝试的例子是

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

DOB一栏看起来像 1988-12-14.

sql hadoop hive bigdata hiveql
1个回答
2
投票

试试下面的选项之一。

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

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


0
投票

不要使用unix_timestamp(),因为它是...。非决定性. 使用 current_date。

 datediff(current_date, Dateofbirthcol) / 365.25

0
投票

有多种方法可以实现,但在hive中没有现成的解决方案。

1) 使用dateiff().这个函数返回两天之间的天数,所以要用365.25除以函数的输出。

这个函数返回两天之间的天数,所以要用365.25除以函数的输出才能得到输出。(除以365.25考虑闰年)

select cast(datediff(current_date, DOB) / 365.25 as int) as age;

2) 使用 months_between() 。

这个函数返回两日之间的月差,所以要用12除以输出,得到预期的输出。

select cast(months_between(current_date, DOB) / 12 as int) as age;

3) 使用UDF 。

如果你正在寻找年、月、日格式的年龄,那么使用hive函数是一种复杂的方法。写一个自定义的udf函数会很有帮助,它将dob作为输入,并返回年龄的格式。 YY 岁月 MMdd 天的格式。

参考日期功能,请参考 蜂巢文档 .

© www.soinside.com 2019 - 2024. All rights reserved.