2017-05-02 47 views
1

當前正在開發一個將表達式從前一個日期傳遞到文件名的包。當前代碼我是以下作爲一個字符串變量:SSIS表達式以前的日期不帶DateAdd()

(DT_WSTR,20)DATEPART( 「YYYY」,DATEADD( 「DD」, - 1,DATEADD( 「MM」,DATEDIFF( 「MM」 , (DT_DATE)「1900-01-01」,getdate())-2,(DT_DATE)「1900-01-01」))) + RIGHT(「0」+(DT_WSTR,20)DATEPART(「MM 「,Dateadd(」DD「, - 1,dateadd(」MM「,datediff(」MM「,(DT_DATE)」1900-01-01「,getdate()) - 5,(DT_DATE)」1900-01-01 「))),2) + 「01」

這目前生產的輸出:

這是目前不正確,因爲我想的日期是從去年同期

這裏的forumula我想:

返回從今天起過去7個月的第一天。

例如:5/2/2017將返回11/1/2017; 6/21/2017將返回12/1/2016; 7/10/2017將返回2017年1月1日;等等

這是可能通過在SSIS中的變量做?

+0

應該很容易改變現有的表達 - 只是'DATEADD'在年份和月份部分爲-1個月,部分爲硬編碼'1'。 – Filburt

+1

你的第一個例子似乎是錯誤的 - 你的意思是5/2/2017將返回11/1/201 ** 6 **? – Filburt

+0

上面的字符串變量會生成一個過去7個月的日期,但是今年仍然是當年。我試圖讓它在過去7個月內產生一個真實的日期。 –

回答

0

你的表達可通過萬

  • 減法7個月從當前日期被修改(和簡化)到這個

    (DT_WSTR, 8)((YEAR(DATEADD("MM", -7, GETDATE())) * 10000) + (MONTH(DATEADD("MM", -7, GETDATE())) * 100) + 1) 
    
    • 減去從7個月當前日期
    • 乘法所得年度
    • 乘以產生的月份100
    • 加上年值,月份值和1(第一天)
    • 轉換爲字符串

    信貸在Yesterday's date in SSIS package setting in variable through expression到@Rangani爲「乘法和加法而不是字符串連接」招

  • +0

    工作!謝謝! –

    0
    SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-05-02'), 112), 6) + '01' 
    SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-06-21'), 112), 6) + '01' 
    SELECT LEFT(CONVERT(VARCHAR, DATEADD("MM", -6, '2017-07-10'), 112), 6) + '01'