2012-01-31 12 views
1

日付の列を持つExcelワークシートを読み込もうとしています。最初の行が空であるため、SSISは列を数値列として扱っているようです。ここで最初の行がSSIS Excelデータソースの日付でない場合は、日付列を読み込みます。

は、Excelの列です:

enter image description here

私はSSIS Excelソースエディタの内部でそれをプレビューすると、それは示しています

enter image description here

あなたは私のTermDate列が現れていることがわかります数字ではなく日付である。どんな助けでも大歓迎です

+1

可能であればExcelファイル以外として送信されたデータを持っています。 SSISとExcelはうまくいっていません。真の.txtファイルを取得できない場合、.csvはExcelファイルよりもうまく機能します。 – HLGEM

答えて

2

Excelの日付の保存へようこそ。 http://www.debugging.com/bug/19252 C#アプリケーションでこの関数を使用して、数値の日付から日時の日付に切り替えることになりました。

/// <summary> 
    /// Seriously? For the loss 
    /// <see cref="http://www.debugging.com/bug/19252"></see> 
    /// </summary> 
    /// <param name="excelDate">Number of days since 1900-01-01</param> 
    /// <returns>The converted days to date</returns> 
    public static DateTime ConvertXlsdtToDateTime(int excelDate) 
    { 
     DateTime dt = new DateTime(1899, 12, 31); 

     // adjust for 29 Feb 1900 which Excel considers a valid date 
     if (excelDate >= 60) 
     { 
      excelDate--; 
     } 

     return dt.AddDays(excelDate); 
    } 

あなたはDateTime値を生成したり、同じことを行うために醜い表現を使用して、スクリプト変換で、式を使用することができます。それは私が

DATEADD("day",TermDate - 1,(DT_DATE)"1899-12-31")

上述したように、あなたの日付は以下ExcelDateを生成するために、派生欄にご入力データ、上記の式を使用した例である偽の1900年2月29日の後にあると仮定していますので、後半のです。私はTermDateAsDateを持っていたので、予想どおりに日付が一致していました。

enter image description here

関連する問題