根据出生日期计算年龄

sbtkgmzw  于 2021-05-31  发布在  Hadoop
关注(0)|答案(3)|浏览(600)

我使用的是hiveql,我需要通过使用出生日期列来计算年龄,但问题是 GetDate 但是不起作用 Current_Date() 做。我尝试的例子是 datediff(yy,Dateofbirthcol,current_date()) As Age .
dob列看起来像 1988-12-14 .

qco9c6ql

qco9c6ql1#

尝试下列选项之一。
floor(datediff(to_date(from_unixtime(unix_timestamp())), Dateofbirthcol) / 365.25) datediff(now(), Dateofbirthcol) / 365.25

vfhzx4xs

vfhzx4xs2#

您可以通过多种方式实现这一点,但在hive中没有现成的解决方案。
1) 使用datediff():
此函数返回两天之间的天数,因此必须将函数输出除以365.25才能获得输出(除以365.25考虑闰年)

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

2) 使用()之间的月份:
此函数返回两天之间的月差,因此必须将输出除以12才能得到预期的输出。

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

3) 使用自定义项:
如果您正在寻找年、月、日格式的年龄,那么使用配置单元函数是一种复杂的方法。这将有助于编写一个自定义自定义自定义函数,它以dob作为输入,并返回年龄 YYMMdd 天格式。
有关日期函数,请参阅配置单元文档。

fhg3lkii

fhg3lkii3#

不要使用unix\u timestamp(),因为它是不确定的。使用当前日期:

datediff(current_date, Dateofbirthcol) / 365.25

相关问题