Ssis 条件分裂变换中年龄的计算
我有一个基于年龄拆分表内容的要求,我有一个字符串格式的DOB列,类型为“19910930”。我使用了下面的命令,运行时效果很好Ssis 条件分裂变换中年龄的计算,ssis,Ssis,我有一个基于年龄拆分表内容的要求,我有一个字符串格式的DOB列,类型为“19910930”。我使用了下面的命令,运行时效果很好 DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE())) 当我在条件拆分转换中尝试将其作为条件时,同样会出现一个错误 DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))<=25 DATEDIFF(YY,CONVERT(date,[DO
DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))
当我在条件拆分转换中尝试将其作为条件时,同样会出现一个错误
DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))<=25
DATEDIFF(YY,CONVERT(date,[DOB]),CONVERT(date,GETDATE())尝试以下方式转换:
DATEDIFF(“YY”,(DT_DATE)(子字符串(@[User::DOB],1,4)+“-”+子字符串(@[User::DOB],5,2)+“-”+子字符串(@[User::DOB],7,2)),GETDATE())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 select中进行计算。谢谢Jayvee和dotjoe…我两种方法都做不到,但我使用了您的建议,在生成源代码时,将年龄作为SQL本身的一个新列进行计算,并且可以使用条件拆分获得所需的结果
DATEDIFF(YY,CONVERT(DATE,DOB),CONVERT(DATE,GETDATE())) as Age
不过,我希望有一种方法可以在派生列中实现这一点
Vjai你说的错误是什么意思?请在您的问题中添加错误详细信息。sreepat…我认为它不会在条件拆分转换中发出错误消息…它显示的所有颜色都是红色,这表明存在错误…很抱歉无法向您提供错误消息。请注意DateDiff(YY,,)
不会为您提供所有日期的正确年龄。它忽略了月份和日期。我在一个派生专栏中测试了我提出的解决方案,它确实起了作用。您尝试应用程序时出现了什么问题?