2016-01-07 38 views
0

我想在我的SSIS包中創建兩個類型爲date的變量。我傳遞一個日期時間(因爲沒有機會獲取直接日期類型)參數給包。這兩個日期變量使用此參數,並且它們是使用表達式創建的。SSIS日期dataype轉換

設參數爲期間。這兩個變量是Var1Var2

現在我嘗試做以下任務

週期是DateTime類型。 VAR1是Date類型。 VAR2必須是Date類型。

Period = 2016-01-01 00.00.000 
VAR1 = (DT_DBDATE)(Period) 
VAR2 = DATEADD("dd" , -1, DATEADD("mm", 1, VAR1 )) 

我正在收到數據類型錯誤,當我試圖分配VAR2這個值。甚至嘗試改變VAR1的dat類型。我也嘗試過對象類型。

任何人都可以請幫我解決這個問題。 VAR1和VAR2必須是DT_DATE類型。可以進行哪種類型的轉換/更改才能完成。

+0

變量VAR2必須是DT_DBDATE類型。除了日期時間,我沒有其他選擇可以在創建時聲明變量。當我使用Object類型併爲其指定表達式時,它會自動更改爲Datetime。使用DateTime時,我不能將其轉換爲DT_DBDATE。 – user3604903

回答

0

您正在將轉換的期間分配到VAR1,但在dateadd函數中繼續使用period

嘗試像這樣

Period = 2016-01-01 00.00.000 
VAR1 = (DT_DATE)(Period) 
VAR2 = (DT_DBDATE)DATEADD("dd" , -1, DATEADD("mm", 1, VAR1 )) 
+0

我很抱歉。變量VAR2必須是DT_DBDATE類型。所以,我嘗試了你給的相同的東西。但是又出現了類型轉換錯誤可以使用哪種數據類型以及必須分配哪種類型的變量。除了日期時間,我沒有其他選擇可以在創建時聲明變量。當我使用Object類型併爲其指定表達式時,它會自動更改爲Datetime。 – user3604903

+0

這不是你的問題所述,嘗試我的編輯,看看它是否有效,我無法訪問在Momen的測試環境 –

0

我還沒有找到任何辦法日期轉換的SSIS。我通常去SUBSTRING。它可能不美麗,但它是有效的。

Period = 2016-01-01 00.00.000 VAR1 = (DT_DATE)(SUBSTRING(Period),1,10) VAR2 = (DT_DATE)(SUBSTRING(DATEADD("dd" , -1, DATEADD("mm", 1, [period])),1,10))

可能需要在那裏扔鑄造(DT_WSTR,20)子。