2013-07-05 62 views
0

您好我正在使用下面的表達式爲文件名與日期時間戳。無法將int轉換爲SSIS表達式中的字符串

(DT_I4)DATEPART("weekday", GETDATE()) ==2 || (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
Replace((DT_STR, 20, 1252)(DATEADD("D", -3,@[System::StartTime])),":","-") + ".xls" : 
Replace((DT_STR, 20, 1252)(DATEADD("D", -1,@[System::StartTime])),":","-") + ".xls" 

這將給我以前的日期總是什麼是我的需要。

但是當我追加的文件名來此表達它給我下面的錯誤 -

"FILENAME"+ 
(DT_I4)DATEPART("weekday", GETDATE()) ==2 || (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
    Replace((DT_STR, 20, 1252)(DATEADD("D", -3,@[System::StartTime])),":","-") + ".xls" : 
    Replace((DT_STR, 20, 1252)(DATEADD("D", -1,@[System::StartTime])),":","-") + ".xls" 

錯誤 - 的數據類型「DT_WSTR」和「DT_I4」是二元運算符「+」不兼容。操作數類型不能隱式轉換爲操作的兼容類型。爲了執行這個操作,一個或兩個操作數需要用一個轉換操作符顯式轉換。

嘗試設置二進制操作結果類型「@ [User :: AnimalName] +(DT_I4)DATEPART(」weekday「,@ [System :: StartTime])」失敗,錯誤代碼爲0xC0047080。

(Microsoft.DataTransformationServices.Controls)

回答

0

這是因爲它規定,你不能把隱含一個整數和一個字符串值在一起。解決方案是將整個三元運算符轉換爲DT_WSTR類型。是的,您確實將每個選項都轉換爲DT_STR,但您仍然將所有內容都包含在演員表中。這很奇怪,但我之前遇到過同樣的事情。

"FILENAME"+ 
(DT_WSTR, 20) 
(
(DT_I4)DATEPART("weekday", GETDATE()) ==2 
|| (DT_I4)DATEPART("weekday",@[System::StartTime]) ==7 ? 
    Replace((DT_STR, 20, 1252)(DATEADD("D", -3,@[System::StartTime])),":","-") + ".xls" 
: 
    Replace((DT_STR, 20, 1252)(DATEADD("D", -1,@[System::StartTime])),":","-") + ".xls" 
) 
相關問題