【问题标题】:unable to convert int to string in SSIS expression无法在 SSIS 表达式中将 int 转换为字符串
【发布时间】:2013-07-05 07:36:57
【问题描述】:

嗨,我正在使用下面的表达式作为带有日期时间戳的文件名。

(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)

【问题讨论】:

    标签: sql ssis


    【解决方案1】:

    正如它所说,您不能隐式地将整数和字符串值放在一起。解决方法是将整个三元运算符转换为 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"
    )
    

    【讨论】:

      猜你喜欢
      • 2019-12-10
      • 1970-01-01
      • 2013-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-23
      • 1970-01-01
      相关资源
      最近更新 更多