SSDT数据包(.dtsx)上数据流中的错误转换日期nvarchar到datetime

时间:2019-07-12 09:51:13

标签: sql sql-server ssis sql-server-data-tools ssdt-bi

我对SSIS包中的自动转换日期有一个奇怪的问题。 我使用Visual Studio Shell 2010开发。

在输入中,我有带有不同日期列和更多内容的* .csv。

第一步,我在CasiopFLUX base(SQL Server 2012)中导入行数据。

CasiopFLUX result screen

所有列类型均为nvarchar(2500)。 格式日期为:MM / DD / YYYY

第二步,我将OLEDB源目标用于CasiopDATA base中的导入数据: Data flow

执行时,您可以看到结果:

CasiopDATA result screen

此数据库中的数据类型为Datetime:

DataType view

我的问题如下:

  • 在Modifiedon列上设置日期时间是可以的
  • InitialDeliveryDate上的日期时间格式为KO:DD MM的反转
  • PlannedDeliveryDate上的格式日期时间为KO:DD MM的反转

我不明白问题出在哪里。在我的SSIS任务属性中,LocaleID配置为“英语(英国)”。所有软件都以英语安装,我服务器上的“区域设置”也以英语安装。

我有点困惑,你有什么主意吗?

非常感谢您

1 个答案:

答案 0 :(得分:0)

英语使用dd/MM/yyyy,美国人使用mm/dd/yyyy。如果您有一个类似02/03/2019的日期,并且您的语言环境是英国,那么它会被推断为02 March 2019而不是03 February 2019(如果您的语言环境是America,就应该是这样)。

就个人而言,当在SQL Server中使用模糊的日期格式,并且excel工作表中的数据未正确配置为日期时,我更喜欢将值作为varchar导入到临时表中,然后转换值并将其插入生产表。

对于您的数据,这意味着您可以使用样式代码CONVERT使用101将数据转换为正确的日期:

CONVERT(date, InitialDeliveryDate,101)