计算条件分裂变换的年龄

时间:2014-07-22 06:45:11

标签: ssis

我要求根据年龄拆分表格内容,并且我的列DOB是字符串格式,类型为' 19910930' .I'我使用了以下命令,它在运行时工作正常

DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE())) 

,当我在条件性拆分转换中将其作为条件

时,它会出错
DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))<=25

我甚至尝试使用相同的表达式进行派生列转换,但也无法正常工作。

你可以帮助我,因为我错过了这个吗?

- 维杰

3 个答案:

答案 0 :(得分:0)

尝试以这种方式转换: DATEDIFF(&#34; YY&#34;,(DT_DATE)(SUBSTRING(@ [User :: DOB],1,4)+&#34; - &#34; + SUBSTRING(@ [User :: DOB], 5,2)+&#34; - &#34; + SUBSTRING(@ [User :: DOB],7,2)),GETDATE())

答案 1 :(得分:0)

当年份介于一年的第一天和[DOB]之间时,按年的DateDiff将不起作用。只要您的[DOB]格式为YYYYMMDD。您可以使用此公式来获得年龄......

select
    CurrentAge = ((convert(varchar(8), getdate(), 112) - cast([DOB] as int)) / 10000)

SSIS表达式中的相同公式非常笨重,有一堆DatePart调用将当前日期[System :: ContainerStartTime]格式化为YYYYMMDD形式,并将[DOB]转换为DT_I4。如果可能的话,我建议在SQL select中进行计算。

答案 2 :(得分:0)

感谢Jayvee和dotjoe ......无论如何都无法完成它但是我使用你的建议来计算年龄作为SQL本身的新列,同时生成Source并且可以使用条件分割得到所需的结果。 / p>

DATEDIFF(YY,CONVERT(DATE,DOB),CONVERT(DATE,GETDATE())) as Age

我希望应该有一种方法可以在Derived Column中完成..

Vjai