【问题标题】:How to get filename with timestamp in ssis如何在ssis中获取带有时间戳的文件名
【发布时间】:2012-05-21 13:16:02
【问题描述】:

我有一个输入文件,必须每天加载到我的桌​​子上。我收到以下格式的文件示例 sample_20120518_160754.CSV。时间戳可能会有所不同,它不是当前时间戳

我已经使用表达式来获取文件名和日期,但是我怎样才能获取文件的时间戳。

这是我用来获取文件和日期的表达式。

"sample_" + RIGHT("0" + (DT_STR,4,1252)DATEPART("yyyy", (DT_DATE)@[User::p_varAsOfDate]), 4) + RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", (DT_DATE)@[User::p_varAsOfDate]), 2) + (DT_STR, 2, 1252)DATEPART("mm", (DT_DATE)@[User::p_varAsOfDate]) +"_"  +".CSV"  

这个表达式产生结果

sample_2012145_.CSV 现在我也想要文件的时间戳。

【问题讨论】:

    标签: ssis


    【解决方案1】:

    下面的表达式也会为您提供日期部分 + 时间部分。您可以在两者之间放置额外的分隔符来完成您想要的格式。

    (DT_STR, 4, 1252)DATEPART("yyyy", @[System::ContainerStartTime]) + 
    RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mm", @[System::ContainerStartTime]), 2) + 
    RIGHT("0" + (DT_STR, 2, 1252)DATEPART("dd", @[System::ContainerStartTime]), 2) +
    RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", @[System::ContainerStartTime]), 2) +
    RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", @[System::ContainerStartTime]), 2) +
    RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", @[System::ContainerStartTime]), 2) + 
    

    您可以编辑上述表达式并使用您选择的另一个变量。我选择 ContainerStartTime 是因为方便。

    【讨论】:

    • 嗨 Rajiv,我尝试使用此表达式,但此表达式会产生当前时间戳。我可能会在早上 6 点收到文件,然后在下午 2 点加载文件。所以在这种情况下它不起作用。
    • 您到底想达到什么目的?您想从 CSV 文件中提取数据吗?为什么你要构造表达式来提取日期和时间? sample_2012145_.CSV 看起来不正确,或者“2012145”没有任何意义。
    • 我每天都会收到文件,我的文件名是 sample_yyyyddmm_hhmmss.csv 格式。所以我将 Asofdate 作为输入变量传递。这是我用来获取文件名“sample_”+ RIGHT("0" + (DT_STR,4,1252)DATEPART("yyyy", (DT_DATE)@[User:: p_varAsOfDate]), 4) + RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mm", (DT_DATE)@[User::p_varAsOfDate]), 2) + (DT_STR, 2, 1252)DATEPART( "dd", (DT_DATE)@[User::p_varAsOfDate]) + ".CSV"
    • 我还是不明白你为什么要创建这个表达式。您是否使用此表达式在 Source 组件中动态设置文件名?如果是这样,有更好的方法来处理这个问题。
    • 你可以简单地使用 GETDATE() 代替系统变量
    【解决方案2】:

    @[User::miFilePath]+"AnyName"+"_"+(DT_WSTR, 04) YEAR( GETDATE() )+(MONTH(GETDATE())>=10 ? (DT_WSTR, 02)MONTH(GETDATE()): "0"+(DT_WSTR, 02)MONTH(GETDATE()))+ (DAY(GETDATE())>=10? (DT_WSTR, 02)DAY(GETDATE()): "0"+(DT_WSTR, 02)DAY(GETDATE()))+"_"+RIGHT("0" + (DT_STR, 2, 1252)DATEPART("hh", GETDATE()), 2) +RIGHT("0" + (DT_STR, 2, 1252)DATEPART("mi", GETDATE()), 2) +RIGHT("0" + (DT_STR, 2, 1252)DATEPART("ss", GETDATE()), 2) + ".txt"

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-19
      • 1970-01-01
      • 2018-01-10
      • 2019-05-28
      相关资源
      最近更新 更多