我使用的是hiveql,我需要通过使用出生日期列来计算年龄,但问题是 GetDate 但是不起作用 Current_Date() 做。我尝试的例子是 datediff(yy,Dateofbirthcol,current_date()) As Age .dob列看起来像 1988-12-14 .
GetDate
Current_Date()
datediff(yy,Dateofbirthcol,current_date()) As Age
1988-12-14
qco9c6ql1#
尝试下列选项之一。floor(datediff(to_date(from_unixtime(unix_timestamp())), Dateofbirthcol) / 365.25) datediff(now(), Dateofbirthcol) / 365.25
datediff(now(), Dateofbirthcol) / 365.25
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作为输入,并返回年龄 YY 年 MM 月 dd 天格式。有关日期函数,请参阅配置单元文档。
YY
MM
dd
fhg3lkii3#
不要使用unix\u timestamp(),因为它是不确定的。使用当前日期:
datediff(current_date, Dateofbirthcol) / 365.25
3条答案
按热度按时间qco9c6ql1#
尝试下列选项之一。
floor(datediff(to_date(from_unixtime(unix_timestamp())), Dateofbirthcol) / 365.25)
datediff(now(), Dateofbirthcol) / 365.25
vfhzx4xs2#
您可以通过多种方式实现这一点,但在hive中没有现成的解决方案。
1) 使用datediff():
此函数返回两天之间的天数,因此必须将函数输出除以365.25才能获得输出(除以365.25考虑闰年)
2) 使用()之间的月份:
此函数返回两天之间的月差,因此必须将输出除以12才能得到预期的输出。
3) 使用自定义项:
如果您正在寻找年、月、日格式的年龄,那么使用配置单元函数是一种复杂的方法。这将有助于编写一个自定义自定义自定义函数,它以dob作为输入,并返回年龄
YY
年MM
月dd
天格式。有关日期函数,请参阅配置单元文档。
fhg3lkii3#
不要使用unix\u timestamp(),因为它是不确定的。使用当前日期: