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

Posted

技术标签:

【中文标题】SSDT 包 (.dtsx) 上数据流中的错误转换日期 nvarchar 到 datetime【英文标题】:Bad conversion date nvarchar to datetime in dataflow on SSDT package (.dtsx) 【发布时间】:2019-07-12 09:51:13 【问题描述】:

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

在输入中,我有 *.csv 与不同的日期列等等。

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

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

第二步,我使用 OLEDB 源目标在 CasiopDATA 库中导入数据:

在执行时,你可以看到结果:

这个数据库中的数据类型是日期时间:

我的问题如下:

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

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

我有点迷茫,你知道吗?

非常感谢您

【问题讨论】:

【参考方案1】:

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

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

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

CONVERT(date, InitialDeliveryDate,101)

【讨论】:

感谢您的快速反馈和编辑我的帖子!我将在 SSIS 中测试转换。谢谢

以上是关于SSDT 包 (.dtsx) 上数据流中的错误转换日期 nvarchar 到 datetime的主要内容,如果未能解决你的问题,请参考以下文章

部署后脚本中的执行过程-SSDT

调试 ssis 包 - 重新加载 InnerPackage.dtsx

如何检查在SSDT VS2015中的SSIS项目中将whcich包设置为启动

创建发布预览时出现 SSDT 发布错误

SSDT 数据库项目中对系统数据库的引用变得重复

安装SSDT2017