tl; dr
タイプとしてDT_DBTIMESTAMPを使用し、fastParseをtrueに設定します
設定
次の行でCSVを作成しました。SQL Serverの日時の精度は.003ミリ秒しかないため、これにより、丸めの問題が確実に発生します。
2012-08-08T13:31:28.170
2012-08-08T13:31:28.171
2012-08-08T13:31:28.172
2012-08-08T13:31:28.173
ターゲットテーブルを作成しました
CREATE TABLE [dbo].[datetime2Demo]
(
[EventDate] [datetime2](7) NOT NULL
, [insert_date] [datetime2](7) NOT NULL DEFAULT(current_timestamp)
, [string_type] [varchar](50) NULL
) ON [PRIMARY]
次に、dt_dbtimestampという名前の接続マネージャーを作成し、Advancedの下に1つの列を定義し、名前EventDate
とデータ型をdatabase timestamp [DT_DBTIMESTAMP]
データフローでは、フラットファイルソースを追加し、上記の接続マネージャーを使用しました。
次に、フラットファイルソースを右クリックして、を選択しましShow Advanced Editor
た。[入力と出力のプロパティ]タブで、フラットファイルソースの出力コントロールを展開し、[出力列]を再度展開して、[イベント日付]を選択しました。[カスタムプロパティ]で、のデフォルト値をFastParse
FalseからTrueに変更しました
string_type値を追加する派生列があった(DT_STR,20,1252)"DT_DBTIMESTAMP"
ので、何が機能し、何が機能しなかったかを追跡できました。
OLE DB変換先を使用して、作成したテーブルに接続しました。
結果
SELECT EventDate、string_type FROM dbo.datetime2Demo
EventDate string_type
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DBTIMESTAMP2
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 13:31:28.0000000 DT_DATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-08 00:00:00.0000000 DT_DBDATE
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-10 13:31:28.0000000 DT_DBTIME2
2012-08-08 13:31:28.1700000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1710000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1720000 DT_DBTIMESTAMP
2012-08-08 13:31:28.1730000 DT_DBTIMESTAMP