我要求根据年龄拆分表格内容,并且我的列DOB是字符串格式,类型为' 19910930' .I'我使用了以下命令,它在运行时工作正常
DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))
,当我在条件性拆分转换中将其作为条件
时,它会出错DATEDIFF( YY,CONVERT(date,[DOB]),CONVERT(date, GETDATE()))<=25
我甚至尝试使用相同的表达式进行派生列转换,但也无法正常工作。
你可以帮助我,因为我错过了这个吗?
- 维杰
答案 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