2012-08-02 71 views
1

使用SQL Server 2008,Visual Studio 2008.將字符串轉換爲日期的SSIS表達式

試圖將數據從字符串列轉換爲派生日期列。 字符串可以採用兩種格式:「dd/mm/yy」(其中20世紀可以假設)或「dd/mm/yyyy」。例如「02/05/12」,「23/12/02」,「13/08/2012」。

所以,我想這樣的表達式派生列:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2)) 

但Visual Studio爲錯誤: 「表達無效,或有內存外的一個錯誤」。

它接受像一個簡單的表達式:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)("20" + SUBSTRING(DateReceived,7,2) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2)) 

但這種表達只會對 「DD/MM/YY」 格式工作。

我在做什麼錯?謝謝。

回答

2

沒關係,錯誤是由於輸入錯誤。 (在列類型上調用RTRIM,而不是列名)。

以下工作:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DateReceived)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2)) 
+0

它的工作原理!謝謝@Moe Sisko – UmbySlipKnot 2013-05-10 09:07:51