2017-02-27 178 views
1

目標列數據應以一種格式:轉換日期時間格式以特定格式在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 –

回答

0

添加腳本組件,馬克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」語句中驗證或嘗試解析(如果需要,嵌套)。 –