2009-12-17 46 views
1

如何將日期時間轉換爲SSIS中的日期?如何從SSIS中的SQL datetime值提取日期?

我想執行一個聚合查詢,它將按特定日期分組。爲了做到這一點,我試圖提取時間戳的日期部分(作爲日期時間存儲),以便我可以在下一步執行GROUP BY。

我看了DATEPART函數,但它看起來像我將不得不多次調用它來檢索月份,日期和年份,將它們連接在一起,然後解析新的日期。有一個更好的方法來做到這一點。

回答

6

SSIS可以使用數據轉換轉換,你有DT_DBTIMESTAMP和輸出使用DT_DBDATE

+0

這工作完全輸入值。謝謝! – 2009-12-17 23:18:38

0

不幸的是,這是最好的方式(在我看來),並根據您的目標欄(如果這是流量結束的地方),它仍然有00:00:00:000上面。但是你可能已經知道了= P。

0

這裏是你,你可以在T-SQL做到這一點,我假設SSIS允許完全訪問SQL Server的功能:

SELECT CAST(FLOOR(CAST(getdate() AS float)) AS datetime) 

基本上,它的日期轉換爲浮動(時間的一小部分一天),使用floor來切斷小數(轉換爲int可能會舍入),然後將浮點數轉換回日期。

高效,有效,並且不需要給DATEPART()多次調用

0

選擇DATEADD(DD,0,DATEDIFF(DD,0,GETDATE()))

2

我的第一個問題將是如果您正在處理同一服務器上的dbs中包含的數據,那麼在將數據帶到SSIS之前,爲什麼不只是在SQL Server中執行所有的轉換和分組?出於性能原因,最好在將數據引入SSIS之前對數據SQL Server進行任何按摩。但是,如果您正在處理異構數據(oracle,excel,文本文件,來自不同sql服務器實例的數據),那麼可以使用派生列轉換並使用轉換(DT_DBDATE)轉換日期,然後使用聚合組件做你的小組。