2013-07-05 3 views
0

안녕하세요. datetime 스탬프가있는 filename에 대해 아래 표현식을 사용하고 있습니다.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" 

ERROR - 데이터 유형 "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" 
) 
관련 문제