2014-10-16 66 views
1

我使用BIDS [SQL Server 2008r2]從csv導入數據。我需要將hh:mm:ss轉換爲數字才能導入到SQL Server中。例如將BIDS中的hh:mm:ss轉換爲數字秒

0時01分05秒= 65

當前步驟:

enter image description here

轉換看起來像這樣。 DataConversion

回答

2

假定您正在討論SQL Server Integration Services,您可以通過派生列轉換完成此操作。

Derived Column Transformation拖動到您的數據流管道中,然後連接源。

enter image description here

打開它,並添加一個新的領域,給它一個名稱並選擇<add as new column>。下面的公式粘貼到表達式中,你字段的名稱替換「SrcTime」:這個表達式將時間字段轉換爲十進制分(例如,1點01分30秒變成61.5)

(DT_NUMERIC,6,2)(((DT_I4)LEFT(SrcTime,2) * 60) + 
((DT_I4)SUBSTRING(SrcTime,4,2)) + 
((DT_NUMERIC,4,2)RIGHT(SrcTime,2)/60)) 

編輯:如果你需要它在幾秒鐘,而不是幾分鐘(1時01分30秒變成3690.00),你可以改變的公式是:

(DT_NUMERIC,10,2)(((DT_I4)LEFT(SrcTime,2) * 3600) + 
((DT_I4)SUBSTRING(SrcTime,4,2) * 60) + 
((DT_NUMERIC,4,2)RIGHT(SrcTime,2))) 

再次編輯:根據您的版本,LEFT()功能不可用的表情編輯器。使用這個公式來代替:

(DT_NUMERIC,10,2)(((DT_I4)SUBSTRING([TALK TIME],1,2) * 3600) + 
((DT_I4)SUBSTRING([TALK TIME],4,2) * 60) + 
((DT_NUMERIC,4,2)RIGHT([TALK TIME],2))) 

enter image description here 這將新列添加到您的管道,你給它的「派生列名稱」的名稱,這將有正確的格式。

+0

礦井沒有LEFT函數。我有權利,但沒有離開。 – d90 2014-10-17 12:57:49

+0

你使用的是什麼版本? – AHiggins 2014-10-17 14:06:45

+0

我正在使用版本2008r2 – d90 2014-10-17 14:16:48

0

這也可以通過在時間戳中轉換字符串數據類型來實現。然後在派生列表達式中使用以下表達式:

DatePart(「Hh」,[Talk Time])* 3600 + DatePart(「mi」,[Talk time])* 60 + DatePart(「ss」,[Talk時間])

上述表達式將返回數字中的數字

相關問題