Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 条件分裂变换中年龄的计算_Ssis - Fatal编程技术网

Ssis 条件分裂变换中年龄的计算

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

我有一个基于年龄拆分表内容的要求,我有一个字符串格式的DOB列,类型为“19910930”。我使用了下面的命令,运行时效果很好

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,,)
不会为您提供所有日期的正确年龄。它忽略了月份和日期。我在一个派生专栏中测试了我提出的解决方案,它确实起了作用。您尝试应用程序时出现了什么问题?