Sql-Server
SSIS 將平面文件單元格轉換為 HH:MM:SS
我看到類似的問題,但大多數都與日期時間或相當不同的要求有關。
我有一個 CSV 報告,其中的時間列儲存為 HH:MM
$$ :SS $$(如果超過 1 天,它會增加 :00 秒……很煩人,而且我無法控制報告本身的執行方式。)我認為,在派生列任務中,我們可以減少秒數。 例子:
- 23:54 = 23H 54M
- 27:35:00 = 27H 35M 00S
我的問題是:
- 如果 CSV 將列載入為文本,那麼派生列需要什麼表達式?
- 我應該如何設置 SQL 數據庫中的數據類型?
相關資訊:SQL Server 2014 和 SSDT for VS 2013
謝謝你,韋斯
時間/日期數據類型通常是儲存持續時間的有問題的選擇。而是使用整數或小數來表示合適的解析度(秒或毫秒很流行,但在這種情況下分鐘可能對您有用)。
在這種情況下,最簡單的選擇可能是:
(DT_I4)TOKEN(Column,":",1) * 60 + (DT_I4)TOKEN(Column,":",2)
.其他方法:
- 如果在小時和分鐘內總是有兩個字元,則可以使用類似
(DT_I4)SUBSTRING( [Column], 1, 2 ) * 60 + (DT_I4)SUBSTRING( [Column], 4, 2 )
.- 如果 hours 可以是 1 個或多個字元,但 minutes 始終是 2:
(DT_I4)SUBSTRING(Column,1,FINDSTRING(Column,":",1) - 1) * 60 + (DT_I4)SUBSTRING(Column,FINDSTRING(Column,":",1) + 1,2)