tl;博士
使用 DT_DBTIMESTAMP 作为您的类型并将 fastParse 设置为 true
设置
我创建了一个包含以下行的 CSV。由于 SQL Server 的日期时间精度仅为 0.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 下定义了一列,其名称EventDate
和数据类型为database timestamp [DT_DBTIMESTAMP]
在我的数据流中,我添加了一个平面文件源并使用了上述连接管理器。
然后我右键单击平面文件源并选择Show Advanced Editor
. 在“输入和输出属性”选项卡上,我展开了我的平面文件源输出控件并再次展开了输出列,然后选择了我的 EventDate。在自定义属性下,我将默认值FastParse
从 False 更改为True
我有一个派生列,它添加了 string_type 值(DT_STR,20,1252)"DT_DBTIMESTAMP"
,因此我可以跟踪哪些有效,哪些无效。
我使用了一个 OLE DB 目标并将其连接到我创建的表。
结果
从 dbo.datetime2Demo 中选择 EventDate、string_type
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