年龄计算器
Age Calculations
我正在尝试根据 monthly
数据为 people
计算 ages
,因此它们的 birth date
将反映给定月份的整数。
然而,我有几行为我提供 negative
年龄。
这个公式中有什么方法可以使它成为
1。 Absolute
值?
2。 Birth date
大于年份就给我 0
?
floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12) as AGE
关于您的第一个问题,您可能想问的是:
floor(abs(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)) as AGE
我不确定以上内容是否也回答了你的第二个问题,或者你是否在寻找诸如以下的案例陈述:
case when date_of_birth > p_some_year then 0
else floor(abs(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12))
end as age
与其取绝对值或零,不如在负日期上加上 100:
floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)
+ case when DATE_OF_BIRTH > to_date('31-JAN-14','DD-MON-YY') then 100
else 0
end as AGE
如果您确实希望未来出生日期的年龄为零而不是负数或上述解决方案,请使用此方法:
greatest(0,floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)) as AGE
上述任一解决方案和任何其他 returns 未来出生日期为零的解决方案都不需要绝对值。
我正在尝试根据 monthly
数据为 people
计算 ages
,因此它们的 birth date
将反映给定月份的整数。
然而,我有几行为我提供 negative
年龄。
这个公式中有什么方法可以使它成为
1。 Absolute
值?
2。 Birth date
大于年份就给我 0
?
floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12) as AGE
关于您的第一个问题,您可能想问的是:
floor(abs(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)) as AGE
我不确定以上内容是否也回答了你的第二个问题,或者你是否在寻找诸如以下的案例陈述:
case when date_of_birth > p_some_year then 0
else floor(abs(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12))
end as age
与其取绝对值或零,不如在负日期上加上 100:
floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)
+ case when DATE_OF_BIRTH > to_date('31-JAN-14','DD-MON-YY') then 100
else 0
end as AGE
如果您确实希望未来出生日期的年龄为零而不是负数或上述解决方案,请使用此方法:
greatest(0,floor(months_between(to_date('31-JAN-14','DD-MON-YY'),DATE_OF_BIRTH )/12)) as AGE
上述任一解决方案和任何其他 returns 未来出生日期为零的解决方案都不需要绝对值。