yyyy mm dd - getdate返回int

时间:2014-08-21 07:43:06

标签: ssis

目标int值是[columndate] - getdate

Create table Source_Table (  [Valyyyymmdd] [nvarchar](24) NULL  )
Create table Destination_Table ( [DestColumn]  [int] NULL  )

Insert into Source_Table (Valyyyymmdd) values
(20130503),(20120403),(00000000),(20110523),(20100715)

我希望与getdate()有所不同 所以我在我的源代码中使用了下面的SQL查询 预期结果SQL

 SELECT DATEDIFF(DAY, CASE WHEN ISDATE(Valyyyymmdd) = 0 THEN getdate() ELSE Valyyyymmdd END ,   getdate()) as DestColumn 
 FROM dbo.Source_Table

DestColumn 479 874 0 1190 1502

但我需要获取Valyyyymmdd并执行ssis派生列以获得导致int值的日期差异。

我试着如下

((DT_WSTR,24)DestColumn == "00000000" ? GETDATE() : (DT_DBDATE)(SUBSTRING((DT_WSTR,10)DestColumn,1,4) + "-" + SUBSTRING((DT_WSTR,10)DestColumn,5,2) + "-" + SUBSTRING((DT_WSTR,10)DestColumn,7,2)))

2 个答案:

答案 0 :(得分:0)

对我来说,以下工作。

Dt == "00000000" ? (DT_DATE)GETDATE() : (DT_DATE)(SUBSTRING(Dt,1,4) + "-" + SUBSTRING(Dt,5,2) + "-" + SUBSTRING(Dt,7,2))

[Dt]取代[DestColumn]

答案 1 :(得分:0)

DATEDIFF("d",([Valyyyymmdd] == "00000000" ? (DT_DBDATE)GETDATE() : (DT_DBDATE)(SUBSTRING([Valyyyymmdd ],1,4) + "-" + SUBSTRING([Valyyyymmdd ],5,2) + "-" + SUBSTRING(@[Valyyyymmdd ],7,2))),GETDATE())