如何在 SSIS 中使用可变数量的空格构建动态连接字符串

How to build a dynamic connection string in SSIS with variable number of whitespaces

我正在尝试使用表达式构建器在 SSIS 中构建动态连接字符串。我要连接的文件有一个以当前日期结尾的命名约定,格式为 - 2019 年 10 月 10 日。我遇到的问题是,当日期的日期部分是个位数时,有两个白色 spaces 在月份部分和日期部分之间。例如 - 提取 Oct__9 2019.

到目前为止我的表达方式只适用于个位数的日子:

@[User::OpenCasesLoadDir] + "Open Exception Reporting Cases- Extract "+

(MONTH(getdate()) == 1 ? "Jan" : MONTH(getdate()) == 2 ? " Feb" : MONTH(getdate()) == 3 ? "Mar" :
  MONTH(getdate()) == 4 ? "Apr" : MONTH(getdate()) == 5 ? "May" : MONTH(getdate()) == 6 ? "June" :
  MONTH(getdate()) == 7 ? "July" : MONTH(getdate()) == 8 ? "Aug" : MONTH(getdate()) == 9 ? "Sep" :
  MONTH(getdate()) == 10 ? "Oct" : MONTH(getdate()) == 11 ? "Nov" : MONTH(getdate()) == 12? "Dec":"")

+ "  " + (DT_STR,4,1252)DAY( DATEADD( "dd", -1, getdate() )) + " " + (DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() )) + ".csv"

有没有办法调整这个表达式,让两个前导白色 space 表示个位数天数,一个前导白色 space 表示两位数天数?

您请求的函数片段

RIGHT(" " + (DT_WSTR,2)DAY(GETDATE()), 2)  

它是如何工作的?
它获取当前日期的天数,然后 - 将其转换为最大长度为 2 的字符串。然后它添加 space 并从字符串的右侧获取 2 个字符。如果天数是一位数天,则选择前缀 space,否则 - 不是。

尝试使用以下表达式:

@[User::OpenCasesLoadDir] + "Open Exception Reporting Cases- Extract " +
(MONTH(getdate()) == 1 ? "Jan" : MONTH(getdate()) == 2 ? " Feb" : MONTH(getdate()) == 3 ? "Mar" :
 MONTH(getdate()) == 4 ? "Apr" : MONTH(getdate()) == 5 ? "May" : MONTH(getdate()) == 6 ? "June" :
 MONTH(getdate()) == 7 ? "July" : MONTH(getdate()) == 8 ? "Aug" : MONTH(getdate()) == 9 ? "Sep" :
 MONTH(getdate()) == 10 ? "Oct" : MONTH(getdate()) == 11 ? "Nov" : MONTH(getdate()) == 12? "Dec":"")
+  RIGHT("  " + (DT_WSTR,2)DAY(GETDATE()), 3) 
+ " " +(DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() )) + ".csv"

使用这个表达式:

  • 如果天是两位数,则只插入一位前导 space。
  • 如果是个位数,则插入两个前导space。

所做的更改:

我替换了

"  " + (DT_STR,4,1252)DAY( DATEADD( "dd", -1, getdate() ))

RIGHT("  " + (DT_WSTR,2)DAY(GETDATE()), 3)