我使用BIDS [SQL Server 2008r2]從csv導入數據。我需要將hh:mm:ss轉換爲數字才能導入到SQL Server中。例如將BIDS中的hh:mm:ss轉換爲數字秒
0時01分05秒= 65
當前步驟:
轉換看起來像這樣。
我使用BIDS [SQL Server 2008r2]從csv導入數據。我需要將hh:mm:ss轉換爲數字才能導入到SQL Server中。例如將BIDS中的hh:mm:ss轉換爲數字秒
0時01分05秒= 65
當前步驟:
轉換看起來像這樣。
假定您正在討論SQL Server Integration Services,您可以通過派生列轉換完成此操作。
將Derived Column Transformation拖動到您的數據流管道中,然後連接源。
打開它,並添加一個新的領域,給它一個名稱並選擇<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)))
這將新列添加到您的管道,你給它的「派生列名稱」的名稱,這將有正確的格式。
這也可以通過在時間戳中轉換字符串數據類型來實現。然後在派生列表達式中使用以下表達式:
DatePart(「Hh」,[Talk Time])* 3600 + DatePart(「mi」,[Talk time])* 60 + DatePart(「ss」,[Talk時間])
上述表達式將返回數字中的數字
礦井沒有LEFT函數。我有權利,但沒有離開。 – d90 2014-10-17 12:57:49
你使用的是什麼版本? – AHiggins 2014-10-17 14:06:45
我正在使用版本2008r2 – d90 2014-10-17 14:16:48