我在 Sql Server 中有一些列在 DateTime 型別列中,需要使用 SSIS 將它們以時間格式和日期格式匯出到 csv。我可以使用格式和轉換讓它們在查詢中顯示為時間和日期,如開始時間、結束時間、開始日期、結束日期列中結果的右側部分所示。
,BEGIN_TIM [Start DTTime] --datetime
,END_TIM [End DTTime] --datetime
,BEGIN_DTE [Start DTDate] --datetime
,END_DTE [End DTDate] --datetime
,FORMAT(BEGIN_TIM, 'hh:mm tt' ) [Start Time]
,FORMAT(END_TIM, 'hh:mm tt' ) [End Time]
,cast(BEGIN_DTE as date) [Start Date]
,cast(END_DTE as date) [End Date]
結果
-- Start DTTime End DTTime Start DTDate End DTDate Start Time End Time Start Date End Date
--1900-01-01 08:30:00.000 1900-01-01 12:30:00.000 2022-05-10 00:00:00.000 2022-06-28 00:00:00.000 08:30 AM 12:30 PM 2022-05-10 2022-06-28
--1900-01-01 08:30:00.000 1900-01-01 12:30:00.000 2022-07-07 00:00:00.000 2022-08-09 00:00:00.000 08:30 AM 12:30 PM 2022-07-07 2022-08-09
--1900-01-01 08:30:00.000 1900-01-01 12:30:00.000 2022-08-03 00:00:00.000 2022-08-12 00:00:00.000 08:30 AM 12:30 PM 2022-08-03 2022-08-12
--1900-01-01 00:00:00.000 1900-01-01 12:00:00.000 2022-08-02 00:00:00.000 2022-08-12 00:00:00.000 12:00 AM 12:00 PM 2022-08-02 2022-08-12
我將這些列插入到表中,然后在 SSIS 中將 OLE DB 源連接到視圖。當我使用平面檔案連接管理器匯出列時,它們以日期時間格式出現。
平面檔案連接管理器匯出日期時間格式
"Start time" ,"End Time" ,"Start Date" ,"End Date"
"1900-01-01 08:30:00","1900-01-01 12:30:00","2022-05-10 00:00:00","2022-06-28 00:00:00"
如果我將平面檔案連接管理器高級中的資料型別設定為 DT_DBTME DT_DBDATE,則在我關閉然后再次查看資料型別時它不會保存。
看起來我可能需要在 Sql Server 中使用時間資料型別和日期資料型別,或者找到一種方法在 SSIS 中將匯出格式化為時間和日期。這可能意味著使用派生列。
將日期時間型別列匯出到時間列和日期列中的 csv 檔案的最佳方法是什么?
一種解決方案 - 如果我格式化用于 Ole DB 源 SSIS 的視圖中的列,則將資料型別設定為 Unicode 字串 DT_WSTR,并且以正確的格式匯出列。
FORMAT([Start Time], 'hh:mm tt' ) [Start Time], FORMAT([End Time], 'hh:mm tt' ) [End Time],
FORMAT([Start Date], 'dd-MM-yyyy' ) [Start Date], FORMAT([End Date], 'dd-MM-yyyy' ) [End Date],
"Start time","End Time","Start Date","End Date"
"08:30 AM" ,"12:30 PM","10-05-2022","28-06-2022"
uj5u.com熱心網友回復:
看來您需要以特定格式匯出的日期和時間。當您在 select 陳述句中強制它們使用正確的表示形式時,管道接收的元資料是資料型別為字串 DT_STR/DT_WSTR 至關重要。
如果這些列第一次呈現給管道時它們是日期或時間型別,那么 SSIS 可能保留了元資料并隱式轉換回日期時間型別。雙擊源和目標之間的管道將顯示型別是什么。
您的平面檔案格式連接管理器也是如此。在這里,您希望將日期和時間列指定為字串,因為雖然它包含日期和時間資料,但您有一個特定的格式,因此請將其保留為正確長度(和 unicode-ness)的字串。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/474600.html
