2017-02-27 10 views
1

Destinationカラムのデータべき1つの形式で:SQLサーバーの接続先テーブルに一つの形式でHIREDATE列を行うにはどのようには、SSIS内の特定の形式に日時形式を変換

enter image description here

+0

あなたのソース形式があいまいです。 '01/10/2008'は10月1日か1月10日ですか?あなたは知らないので、あなたはそれを変換することはできません。また、SQL Serverの日付 '形式'についても忘れてしまいます。 'DATE'という正しいデータ型を選択してビジュアルフォーマットを忘れる –

+0

フラットファイルの各レコードで使用されている日付フォーマットを特定する方法がない限り、正しく実行できません。 @ Nick.McDermaidは次のように書いています - その日が13日未満のすべての日付はあいまいです。また、[日時データ型は表示形式を保存しません]。(http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) –

+0

If yyyy/mm/dd形式に変更できるのはyyyy/mm/ddまたはdd/mm/yyyyの2種類だけです。 @ Nick.McDermaid –

答えて

0

次のことを書くのスクリプトではdataTypeとDT_DBTIMESTAMP

で新しい出力列outHireDateを追加し、入力欄として、スクリプトコンポーネント、マークHireDateを追加します。

形式の配列を宣言します。

Dim strFormats() as string = {"dd/MM/yyyy","yyyy/MM/dd","MM/dd/yyyy"} 

およびInput0_ProcessInputRowサブ用途DateTime.ParseExact次のような機能があります。

Row.OutHireDate = DateTime.ParseExact(Row.HireDate,strFormats,New System.Globalization.CultureInfo("en-GB")) 

日と月が13(例:2010年1月3日)よりも低い場合には、競合が発生することがあり

重要な注意

+0

どちらの形式の行がわからない場合は、これは意味がありません。 –

+0

@NickMcDermaid私はそれに同意します、これは私の答えの重要なノートで意味しています – Hadi

+0

"if"文で最初に検証するか、try(必要に応じて入れ子にされます)を試します。 –

関連する問題