条件分割变换中年龄的计算



我需要根据年龄拆分表内容,并且我有一个列DOB,它是字符串格式,类型为'19910930'。我使用了下面的命令,当运行

时效果很好
DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE())) 

,同样给出了一个错误,当我尝试它作为条件分割转换的条件

DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))<=25

我甚至用相同的表达式尝试了派生列变换,但也不起作用。

你能告诉我我遗漏了什么吗?

——Vijay

试着这样转换:DATEDIFF("YY (DT_DATE) (SUBSTRING(@用户::罗伯特,1、4)+"-"+子串(@用户::罗伯特,5,2)+"-"+子串(@用户::罗伯特,7,2)),获取当前日期())

DateDiff by year当日期介于年初一和[DOB]之间时将不起作用。只要您的[DOB]是YYYYMMDD格式。你可以用这个公式得到年龄…

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

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

谢谢Jayvee和dotjoe…我无法做到这两种方式,但我反而使用你的建议来计算年龄作为SQL本身的一个新列,同时生成源,可以使用条件分割得到所需的结果。

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

我希望应该有一种方法,这可以在派生列虽然..

Vjai

最新更新