【问题标题】:how do i select previous date using ssis expression?如何使用 ssis 表达式选择上一个日期?
【发布时间】:2013-07-05 05:03:39
【问题描述】:

嗨,我有 ssis 包和以下表达式 这给了我今天的文件名日期和时间

@[User::FilePath]+ "Bloomberg_"+REPLACE((DT_STR, 20, 1252)
(DT_DBTIMESTAMP)@[System::StartTime], ":", "")+".xls"

\\public\\Bloomberg_Upload\\Bloomberg_2013-07-05 005738.xls

我需要在工作日之前获得一个日期,例如以下日期:

\\public\\Bloomberg_Upload\\Bloomberg_2013-07-04 005738.xls

我该怎么做?

星期一-

如果我在星期一执行我的包,日期应该是星期五。

请指导我

我正在尝试这样 -

(DT_I4)DATEPART("weekday",@[System::StartTime]) ==2 ? 
Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","-") + ".xls" :
Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","-") + ".xls"

【问题讨论】:

    标签: sql ssis


    【解决方案1】:

    如果我对您的理解正确,您只是想弄清楚如何获取前一天的日期,如果前一天的日期恰好是周末,则获取最后一个工作日。

    您的代码几乎没有问题,您只需要更改您的工作日常量。

    此代码将检查是否是星期一,如果是则减去 3 天,否则减去 1。

    @[User::FilePath]+"Bloomberg_"+((DT_I4)DATEPART("weekday",@[System::StartTime]) ==1 ? 
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -3,@[System::StartTime])),":","") + ".xls" :
    Replace((DT_STR, 20, 1252)(DATEADD( "D", -1,@[System::StartTime])),":","") + ".xls")
    

    【讨论】:

      【解决方案2】:

      也许使用GETDATE()会更好 然后你可以像这样做减号:

      DATEADD("day", -1, GETDATE())
      

      也可以看看这里: DATEADD (SSIS Expression)

      【讨论】:

        【解决方案3】:

        去年:

        (DT_WSTR,4)YEAR(DATEADD("yy",-1,GETDATE()))

        上一季度:

        (DT_WSTR,1)DATEPART("qq",DATEADD("qq",-1,GETDATE()))

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-03-09
          • 2021-06-09
          • 2021-09-11
          • 2017-04-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-09-06
          相关资源
          最近更新 更多