我的源表中有一列[Valyyyymmdd] [nvarchar](24) NULL
:
Valyyyymmdd
=================
20130503
20120403
00000000
20110523
20100715
我希望与getdate()
有所不同,所以我在源代码中使用了以下查询
DATEDIFF(DAY, IIF( [Valyyyymmdd] = '00000000', CONVERT(VARCHAR(8), GETDATE(), 112), [Valyyyymmdd]) , getdate()) as SalesStageAging
但我需要获取Valyyyymmdd
并执行ssis派生列,以获得导致int
值的日期差异。
请提供必须在派生列表达式中编写的表达式
答案 0 :(得分:0)
试试这个:
DATEDIFF("d",[Valyyyymmdd] == "00000000" ? GETDATE() : (DT_DBDATE)(SUBSTRING([Valyyyymmdd],1,4) + "-" + SUBSTRING([Valyyyymmdd],5,2) + "-" + SUBSTRING([Valyyyymmdd],7,2)),GETDATE())
假设[Valyyyymmdd]
是格式为" yyyyMMdd"的字符串,我们将其拆分为年,月和日期部分,在部分之间插入连字符以将其格式化为" yyyy- MM-DD"然后将其转换为日期,即数据类型DT_DBDATE
。最后,我们使用条件运算符来检查值是否等于" 00000000",并将当前日期或从输入解析的日期与当前日期进行比较以返回结果。