如何將日期時間轉換爲SSIS中的日期?如何從SSIS中的SQL datetime值提取日期?
我想執行一個聚合查詢,它將按特定日期分組。爲了做到這一點,我試圖提取時間戳的日期部分(作爲日期時間存儲),以便我可以在下一步執行GROUP BY。
我看了DATEPART函數,但它看起來像我將不得不多次調用它來檢索月份,日期和年份,將它們連接在一起,然後解析新的日期。有一個更好的方法來做到這一點。
如何將日期時間轉換爲SSIS中的日期?如何從SSIS中的SQL datetime值提取日期?
我想執行一個聚合查詢,它將按特定日期分組。爲了做到這一點,我試圖提取時間戳的日期部分(作爲日期時間存儲),以便我可以在下一步執行GROUP BY。
我看了DATEPART函數,但它看起來像我將不得不多次調用它來檢索月份,日期和年份,將它們連接在一起,然後解析新的日期。有一個更好的方法來做到這一點。
在SSIS可以使用數據轉換轉換,你有DT_DBTIMESTAMP
和輸出使用DT_DBDATE
不幸的是,這是最好的方式(在我看來),並根據您的目標欄(如果這是流量結束的地方),它仍然有00:00:00:000上面。但是你可能已經知道了= P。
這裏是你,你可以在T-SQL做到這一點,我假設SSIS允許完全訪問SQL Server的功能:
SELECT CAST(FLOOR(CAST(getdate() AS float)) AS datetime)
基本上,它的日期轉換爲浮動(時間的一小部分一天),使用floor來切斷小數(轉換爲int可能會舍入),然後將浮點數轉換回日期。
高效,有效,並且不需要給DATEPART()多次調用
選擇DATEADD(DD,0,DATEDIFF(DD,0,GETDATE()))
我的第一個問題將是如果您正在處理同一服務器上的dbs中包含的數據,那麼在將數據帶到SSIS之前,爲什麼不只是在SQL Server中執行所有的轉換和分組?出於性能原因,最好在將數據引入SSIS之前對數據SQL Server進行任何按摩。但是,如果您正在處理異構數據(oracle,excel,文本文件,來自不同sql服務器實例的數據),那麼可以使用派生列轉換並使用轉換(DT_DBDATE)轉換日期,然後使用聚合組件做你的小組。
這工作完全輸入值。謝謝! – 2009-12-17 23:18:38