2014-09-22 316 views
2

我有了这个来计算一个人的年龄在Teradata数据:计算年龄Teradara

选择(提取物(一年CURRENT_DATE) - 提取物(从BIRTH_DATE年)(名为岁))+情况下CURRENT_DATE - (YEARS(间隔年))< BIRTH_DATE then -1 else 0 end

但是,所有的出生日期都是十进制的,例如17.773824。我怎么能把这个转化为恰当的日期,并从中提取出上述代码中的年份?像CONVERT这样的SQL函数可以工作吗?

非常感谢。

+0

17.773824应该是什么日期?它是如何计算的? – dnoeth 2014-09-22 18:22:14

+0

嗨dnoeth,17.773824是一个小数。它应该是通过从当前(系统)时间减去一个人的生日来计算的。我昨天能够提出一个解决方案:“选择演员(演员((出生日期_dim_ck - 19000000)作为int)作为日期)作为DOB, \t \t(current_date - DOB)year as Age”。显然,19000000是Teradata在内部存储日期的方式,我们必须使用“as int”将值转换为整数,因为Teradata在这种情况下似乎没有很好地消化小数。非常感谢。 – 2014-09-23 19:06:53

+0

如果您已找到工作解决方案,请将其作为答案张贴并接受该答案为正确答案。这可能有助于其他人寻求类似问题的帮助。 – xenodevil 2014-09-30 07:51:09

回答

3

这里有一个稍微不同的方法。

select 
cast((cast(date as int) - cast(BIRTH_DATE as int))/ 10000 as int) as AGE 
+0

感谢您的回答,布赖恩。我很感激! – 2015-06-02 02:53:22