xlsスプレッドシートをテーブルにインポートしようとしていますが、列の1つを同じテーブルの別の列から派生させる必要があります。インポート後にSQLタスクを作成するのではなく、インポートフェーズでこれを実行したいと思います。SSISで式を作成することに関しては恐ろしいので、これはおそらく簡単な作業ですが、正しく理解することはできません。
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,columndata)+1,0))
それが私が使おうとしている表現です。
xlsスプレッドシートをテーブルにインポートしようとしていますが、列の1つを同じテーブルの別の列から派生させる必要があります。インポート後にSQLタスクを作成するのではなく、インポートフェーズでこれを実行したいと思います。SSISで式を作成することに関しては恐ろしいので、これはおそらく簡単な作業ですが、正しく理解することはできません。
DATEADD(s,-1,DATEADD(mm, DATEDIFF(m,0,columndata)+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) )