1

SSIS パッケージを使用して SQL Server 2008 にインポートするカンマ区切りのテキスト ファイルがあります。パッケージの一部として、テキスト ファイルの一部が終了日であるため、派生列があります。私が抱えている問題は、テキスト ファイル0000000020130207. 私の派生列エディターには、すべてゼロではない日付に対して正常に機能する次の式があります。

(DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))

ゼロを処理する最善の方法について、誰かが解決策や支援を提供できますか?

4

2 に答える 2

5

原因:

派生列変換が値00000000を dateに変換しようとしていますが00-00-0000、これは有効な日付値とは見なされません。

オプション 1: データベース列で NULL を許可

データベース列が として定義されている場合、つまりNULLNULLを受け入れることができる場合は、変換の式を次のように変更します。Derived Column

[Column 20] == "00000000" ? NULL(DT_DATE) : (DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))

オプション 2: データベース列は NULL を許可しない

データベース列が として定義されている場合、つまりNULL値をNOT NULL受け入れることができない場合は、変換の式を次のように変更します。Derived Column

[Column 20] == "00000000" ? (DT_DATE) "1900-01-01" : (DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))
于 2013-02-07T13:40:04.510 に答える
0

試す

[Column 20] = "00000000" ? (DT_DATE("19000101") : (DT_DATE)(SUBSTRING([Column 20],1,4) + "-" + SUBSTRING([Column 20],5,2) + "-" + SUBSTRING([Column 20],7,2))

基本的に、列 20 が 8 つのゼロであるかどうかを確認し、日付 01-01-1900 を関連付けます。それ以外の場合は、列 20 で見つかったものを変換します。

于 2013-02-07T13:36:34.503 に答える