1

私の表現は次のようなものです。

DATEDIFF("dd",(DT_DATE)(SUBSTRING(@[User::strExcelFileName],15,2) + "-" + SUBSTRING(@[User::strExcelFileName],18,2) + "-" + SUBSTRING(@[User::strExcelFileName],21,4)),GETDATE()) > @[User::intDaysCount]

私のファイル:TempConfigPr_06172013.xlsx

問題は、「DT_WSTR」からデータ型「DT_DATE」への変換中にエラーが発生したことです...どこが間違っているのか、これを解決する方法を教えてください。

注:確認しましたが、この式は正常に機能しています。

DATEDIFF("dd",(DT_DATE)("11-18-2010"),GETDATE()) > @[User::intDaysCount]
4

1 に答える 1

2

SSIS で式を編集するのは骨が折れる場合があります。それらが期待どおりに機能しない場合は、それらを複数の変数に分割し、相互にフィードするのが最善であることがわかりました。

そうすることで、あなたの根本的な問題は、この式が有効な日付値を生成していないことであることがすぐにわかりました。生成した61-20-3.xl

SUBSTRING(@[User::strExcelFileName],15,2) + "-" 
+ SUBSTRING(@[User::strExcelFileName],18,2) + "-" 
+ SUBSTRING(@[User::strExcelFileName],21,4)

文字列型の変数を作成しstrExcelFileDate、式を使用してアンダースコアに続く 8 文字の文字列を作成しました。

SUBSTRING(@[User::strExcelFileName],  FINDSTRING(@[User::strExcelFileName], "_", 1)+1, 8)

残念ながら、その文字列値06172013は日付に直接キャストできません。その文字列を切り分けて、日付データ型にキャストできるものにする必要がありました。DateTime 型の dtExcelFileDate という名前の新しい変数が作成されました。その式を使用して文字列を yyyy-mm-dd に変換し、その全体を DT_DATE データ型にキャストしました。

(DT_DATE) (RIGHT(@[User::strExcelFileDate], 4) + "-" 
+ SUBSTRING(@[User::strExcelFileDate], 1,2) 
+ "-" + RIGHT(SUBSTRING(@[User::strExcelFileDate],1,4), 2))
于 2013-06-17T15:04:46.660 に答える