转换日期时间格式以特定格式在SSIS

问题描述:

目标列数据应以一种格式:转换日期时间格式以特定格式在SSIS

enter image description here

怎么办Hiredate列在一个格式为的SQL Server目标表。

+0

你的源文件格式是不明确的。 01/10/2008是在1月1日还是10日?你不知道,所以你不能转换它。还*在SQL Server中忘记*关于日期'格式'。选择正确的数据类型'DATE'并忘记视觉格式 –

+0

除非您有一些方法来确定平面文件中每个记录中使用的日期格式,否则无法正确完成。正如@ Nick.McDermaid所写的那样 - 所有日期小于13的日期都不明确。此外,您应该知道[日期时间数据类型不保存显示格式。](http://stackoverflow.com/questions/30032915/how-to-cast-the-datetime-to-time/30033028#30033028) –

+0

如果它只有两种格式,即yyyy/mm/dd或dd/mm/yyyy,可以更改为yyyy/mm/dd格式吗? @ Nick.McDermaid –

添加脚本组件,马克HireDate作为输入柱,用的dataType DT_DBTIMESTAMP

添加新的输出列outHireDate在脚本编写如下:

声明的格式的数组:

Dim strFormats() as string = {"dd/MM/yyyy","yyyy/MM/dd","MM/dd/yyyy"} 

并在Input0_ProcessInputRow下使用DateTime.ParseExact功能如下:

Row.OutHireDate = DateTime.ParseExact(Row.HireDate,strFormats,New System.Globalization.CultureInfo("en-GB")) 

重要提示

这可能会导致冲突时,日,月比13(例如:01/03/2010)低

+0

如果我们不知道哪一行有哪种格式,这是毫无意义的。 –

+0

@NickMcDermaid我同意这一点,这就是我的意思是在我的回答中的重要笔记 – Hadi

+0

首先在“if”语句中验证或尝试解析(如果需要,嵌套)。 –