如何在 SSIS 中生成具有可变数量的空格的动态连接字符串



我正在尝试使用表达式生成器在 SSIS 中构建动态连接字符串。我要连接的文件具有以当前日期结尾的命名约定,格式为 - Oct 10 2019。我遇到的问题是,当日期的日部分为个位数时,月部分和日部分之间有两个空格。 例如 - 提取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"

有没有办法调整这个表达式,以便有两个前导空格表示个位数的日子和一个前导空格表示两位数的日子?

您请求的函数片段

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

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

尝试使用以下表达式:

@[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"

使用此表达式:

  • 如果 day 是两位数值,则只插入一个前导空格。
  • 如果是一位数字的值,则插入两个前导空格。

所做的更改:

我替换了

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

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

最新更新