SSIS派生的日期差异列表达式

时间:2014-08-20 10:12:14

标签: ssis

我的源表中有一列[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值的日期差异。

请提供必须在派生列表达式中编写的表达式

1 个答案:

答案 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",并将当前日期或从输入解析的日期与当前日期进行比较以返回结果。