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的主要内容,如果未能解决你的问题,请参考以下文章
调试 ssis 包 - 重新加载 InnerPackage.dtsx