2017-01-12 25 views
0

我使用SSIS ETL(我是一個新手),並嘗試從格式「08/03/2013 00:00:00」的SQL服務器表中提取日期到Excel 2013文件。我需要Excel中的日期格式爲「dd/mm/yyyy」,它們必須保留爲日期,以便層次結構保持不變。即當您在列上進行自動篩選時,您可以看到日期組。數據列中還有一些空條目。ssis ETL約會到Excel

我在ETL腳本中嘗試過的東西: - 1)從SQL表直接轉換爲Excel文件 - 結果「2013-03-08 00:00:00」,yyyy/mm/dd ss:ss:ss no層次結構。我曾嘗試更改Excel列格式,但不管我選擇的日期保持不變。 2)然後我將一個日期轉換添加到ETL,將SQL日期更改爲DT_DATE - 結果「3/8/2013」​​,m/d/yyyy,沒有層次結構。 3)然後我嘗試了日期轉換,將SQL日期更改爲DTW_STR - 結果「2013/03/08 00:00:00」,yyyy/mm/dd ss:ss:ss no hierarchy。 4)然後我嘗試了各種ETL轉換爲字符串,但沒有一個被Excel識別爲日期,因此沒有層次結構。

我不能「重新教育」用戶使用新的日期格式「yyyy/mm/dd」 我不是一個強大的編碼器,所以如果可能的話,更願意在ETL中執行此操作。

因此,總結一下,我需要Excel中的日期爲實際日期,可以格式化爲dd/mm/yyyy。

+0

不是一個理想的解決方案,但你可以嘗試在添加另一列到輸出Excel中,你可以使用DATEVALUE函數將文本轉換爲Excel數據,然後格式化適當? – maxhob17

+0

只是一個想法,但你是用SSIS綁定嗎?一個數據連接excel表,你可以參考是一個合適的選擇? https://support.office.com/zh-cn/article/Connect-to-import-external-data-1376a390-a8bd-4718-aeb5-dff2ae88e92d?ui=en-US&rs=zh-CN&ad=US – iamdave

+0

感謝這些建議,我只是希望SSIS ETL與Excel兼容,ETL已經被用於處理文件,我想它已經在設計時考慮了提取,而不是試圖填充到Excel中。 –

回答

0

我相信應該做的就是嘗試使用派生列轉換。

派生列名: newDate

派生列:替換 'originalDate'

表達:RIGHT("0" + (DT_WSTR, 2)DATEPART("dd", [originalDate]), 2) + "/" + RIGHT("0" + (DT_WSTR, 2) DATEPART("mm", [originalDate]), 2) + "/" + (DT_WSTR, 4)DATEPART("yyyy", [originalDate])

這將需要每一個部分,並將其轉換成字符串格式,以便我們可以將它們連接成我們想要的格式。如果excel無法識別,則可能需要將所有內容都括在括號中並將其轉換回日期格式。 (DT_DATE)(...)

+0

我試過喬納森的建議。但是,無論使用什麼格式的日期,在Excel中打開時都會將ETL視爲文本。此刻有人手動運行VBA腳本將所有條目轉換爲日期,我希望能夠在ETL中執行某些操作來刪除手動干預。想想我將不得不調查運行VB腳本來完成轉換。 –