2012-11-29 39 views
3

我是很新,SSIS,我運行到哪裏我使用的是SQL語句中的OLE DB源的步驟來拉我的數據是一個問題,這個數據包含5個DATETIME字段需要進行轉換,並且所有數據都將進入平面文件。SSIS日期爲字符串轉換錯誤

我做的轉換在SQL就像這樣:

REPLACE(CONVERT(VARCHAR(10), birthdate, 101), '/', '') AS 'Date of Birth (MMDDYYYY)

在SSIS平面文件連接管理我的數據類型爲字符串[DT_STR]我OutputColumnWidth爲8。這在SSIS不工作截斷,如上面的轉換創建一個8個字符的varchar。如果我嘗試轉換爲varchar(8),它會截斷sql server management studio中的數據。

我的問題是,我的下一個轉換的嘗試失敗。這裏的SQL代碼:

REPLACE(CONVERT(VARCHAR(10), exp_date, 103), '/', '') AS 'Expiration Date 

我得到以下錯誤:「值不能因爲一個潛在的數據丟失的轉換」,即使一切都已經複製了相同的設置。該轉換將日期轉換爲'DDMMYYYY'格式。

我從研究,這是一個數據轉換錯誤知道,但我不知道怎麼去解決它尤其是第一次轉換正常工作。

有趣的是,當我重定向錯誤的行不同的平面文件的日期被拉進去並轉換沒有問題的。

我在這裏損失,並希望從該組中的任何幫助。

+0

任何理由的時候,爲什麼你使用「101」 MM/DD/YYYY爲第一,第二格式和「103」 DD/MM/YYYY格式? (不是那會導致問題!) –

+0

這就是平面文件發送到的部門所要求的。我正在將在Power Builder上運行多年(不是我自己)的自動報告轉換爲SSIS,這是原始格式。 – kdejarnet

+0

EXP_DATE什麼數據類型 – Justin

回答

1

我想通了,爲什麼它不工作。當我第一次創建軟件包時,只有生日日期被轉換了,因爲我的注意力來自於不同的日期格式。在我運行它並確認所有數據都被拉出後,我意識到我還需要轉換其他4個日期。問題是,即使我在sql中進行了更改,並且在Flat File Connection Manager中,元數據仍被設置爲這4個字段的原始設置。我重新創建了一步,並正確轉換了所有內容。感謝您抽空迴應

+1

從上面發佈了來自用戶1864416的回答,以使社區受益。標記爲社區wiki,因此我不會從別人的答案中獲益。 –