【问题标题】:How do I format date value as yyyy-mm-dd using SSIS expression builder?如何使用 SSIS 表达式生成器将日期值格式化为 yyyy-mm-dd?
【发布时间】:2011-08-03 06:32:07
【问题描述】:

您好,我已动态获取平面文件源名称,即文件名如“source 2011-08-11” 我正在创建表达式生成器,用于根据文件名获取最新文件。 我喜欢 创建了一个具有文件夹路径的变量:C\backup\

现在在表达式生成器中我如何添加日期??? 我试过了

@[User::DirPath]+"source"+ (DT_STR,4,1252)YEAR( DATEADD( "dd", -1, getdate() ))
+"-"+(DT_STR,4,1252)MONTH( DATEADD( "dd",-1, getdate() ))+"-"+(DT_STR,4,1252) 
DAY(DATEADD( "dd", -1, getdate() )) +".CSV"

这是错误的,请给我输出的表达式: "来源 2011-08-11"

【问题讨论】:

    标签: ssis


    【解决方案1】:

    正确的表达是

    "source " + (DT_STR,4,1252)DATEPART( "yyyy" , getdate() ) + "-" +
    RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , getdate() ), 2) + "-" +
    RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , getdate() ), 2) +".CSV"
    

    【讨论】:

    • 嘿,如果我需要更改日期,那么我需要更改值
    • +1,虽然我希望有另一种方式。几乎每个包都需要的东西的复杂程度简直是淫秽的。 SSIS 物有所值。
    • 这相当于 20110811 而不是 2011-08-11。在前 2 个 + 之后需要一个“-”+。
    • 谢谢。如何做到这一点需要很长时间——我认为必须有一种更简单的方法,但显然不是。格式化日期的 6 个函数 - 相当蹩脚。傅女士。
    • 请记住 - 如果它变得太荒谬,您总是可以使用 C# 的脚本任务。不过我想说 SSIS 的第一条规则是“尽量不要使用脚本任务”。
    【解决方案2】:

    看起来您创建了一个单独的问题。我用相同的答案回答了你的另一个问题How to change flat file source using foreach loop container in an SSIS package?。不管怎样,又来了。

    创建两个字符串数据类型变量,即DirPathFilePath。将值 C:\backup\ 设置为变量 DirPath。不要给变量FilePath设置任何值。

    选择变量FilePath,然后按F4查看属性。将EvaluateAsExpression 属性设置为True 并将Expression 属性设置为@[User::DirPath] + "Source" + (DT_STR, 4, 1252) DATEPART("yy" , GETDATE()) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("mm" , GETDATE()), 2) + "-" + RIGHT("0" + (DT_STR, 2, 1252) DATEPART("dd" , GETDATE()), 2)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-11-01
      • 1970-01-01
      • 2013-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-09-01
      • 2017-07-10
      相关资源
      最近更新 更多