1

xlsスプレッドシートをテーブルにインポートしようとしていますが、列の1つを同じテーブルの別の列から派生させる必要があります。インポート後にSQLタスクを作成するのではなく、インポートフェーズでこれを実行したいと思います。SSISで式を作成することに関しては恐ろしいので、これはおそらく簡単な作業ですが、正しく理解することはできません。

DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,columndata)+1,0))

それが私が使おうとしている表現です。

4

1 に答える 1

0

次のものが必要です。

DATEADD("S",-1,DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) )

1) datepart を囲むには " を使用する必要があります。

2) 0 日付を明示的な日付型にキャストする必要があります。

この式は、列に日付のシリアル番号 [dataDate] を取り、その日数を日付に -2 加算します。

DATEADD("D",[dataDate],(DT_DATE)-2)

(私のバージョン (sql2008r2 と Excel 2007) では sql day 0 と Excel day 0 が 2 日違うようです) 日付 0 からその日付までの月数を見つけます。

DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))

次に、その月数に 1 を加算し、日付 0 に戻します

DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) 

(列の日付値に続く翌月の初めを取得するため)、次に、日付から 1 秒を減算して、列の日付値の月の最後の秒を日時形式で取得します。

DATEADD("S",-1,DATEADD("M",DATEDIFF("M", (DT_DATE) 0,DATEADD("D",[dataDate],(DT_DATE)-2))+1,(DT_DATE)0) )
于 2012-07-27T21:30:23.333 に答える