1

以下の評価により、yyyymmdd 形式の日付が int として設定されます。

私がする必要があるのは、SSISで日をX日オフセットし、それに応じて月と年のオフセットを維持する機能です。

答えが見つからないようです。誰もが以下のようにフォーマットする方法の例を持っていますが、日、月、または年でオフセットしてフォーマットし、同時にすべての部分を正確に保つ必要がある場合はどうでしょう.

RIGHT((DT_STR,4,1252)YEAR(DATEADD("dd",0,getdate())),4) +""+
RIGHT("0"  +(DT_STR,4,1252)MONTH(DATEADD("dd",-1,getdate())),2)+""+
RIGHT("0" +(DT_STR,4,1252)DAY(DATEADD("dd",0,getdate())) ,2)

誰?

C# や TSQL ではこれは簡単ですが、この SSIS は私の忍耐力を弱めています。

ありがとう。

4

3 に答える 3

3

これを実現するための可能な解決策は次のとおりです。

SSISパッケージで、4つのパッケージスコープ変数を宣言します。

  1. TodaysDate-タイプの変数DateTime。DateTimeに設定すると、変数には現在の日付と時刻が割り当てられます。これを変更して、選択した日付に設定することもできます。

  2. OffsetValue-タイプの変数Int32。これはオフセット値を保持します。この例では、オフセット値を日数で選択しています。そこで、値を7に設定しました。

  3. OffsetDate-タイプの変数DateTime。この変数を選択し、F4を押してプロパティを表示します。プロパティEvaluateAsExpressionをに変更しますTrueExpresstionを値に設定しますDATEADD( "dd", @[User::OffsetValue] , @[User::TodaysDate] )。この式は、オフセット値を変数TodaysDateに追加して、新しいOffsetDateを取得します。

  4. FormattedDate-タイプの変数String。この変数を選択し、F4を押してプロパティを表示します。プロパティEvaluateAsExpressionをに変更しますTrueを次の値に設定します

RIGHT((DT_STR,4,1252)YEAR(DATEADD("dd",0, @[User::OffsetDate] )),4) +""+ RIGHT("0" +(DT_STR,4,1252)MONTH(DATEADD("dd",-1,@[User::OffsetDate])),2)+""+ RIGHT("0" +(DT_STR,4,1252)DAY(DATEADD("dd",0,@[User::OffsetDate])) ,2)

唯一の違いは、選択した日付(この場合は変数の値)をフォーマットしていることですOffsetDate。この変数は、すでにオフセットされている日付を保持します。

以下のスクリーンショットはサンプルを示しています。変数TodaysDateはに設定され11/28/2011ます。変数に7日を追加すると、フィールドOffsetDateがに設定され12/05/2011ます。ご覧のとおり、変数FormattedDateは、新しくオフセットされた日付をにフォーマットします20111205

この例は、変数TodaysDateを削除することにより、 1つ少ない変数で実行することもできます。日、月、年など、タイプごとに1つのオフセット変数を設定することもできます。それはすべて自分の好みに帰着します。

例

これがあなたが探していたものであり、おそらくこれを達成する方法のアイデアをあなたに与えることを願っています。

于 2011-11-28T21:24:32.300 に答える
1
"C:\\inetpub\\logs\\LogFiles\\W3SVC2\\u_ex" + 
    RIGHT("0" + (DT_STR,4,1252)DATEPART( "yy" , DATEADD( "dd" , -1, getdate() ) ), 2) +
    RIGHT("0" + (DT_STR,4,1252)DATEPART( "mm" , DATEADD( "dd" , -1, getdate() ) ), 2) +
    RIGHT("0" + (DT_STR,4,1252)DATEPART( "dd" , DATEADD( "dd" , -1, getdate() ) ), 2) + ".log"
于 2012-07-26T07:20:54.243 に答える
1

私の個人的な好みは、スクリプト タスクで日付の操作と書式設定を行うことです。(SSIS 2008 を使用していると仮定すると、スクリプト タスクは C# で記述できます。)

于 2011-12-01T02:07:30.040 に答える