Sql-Server

SSIS 將平面文件單元格轉換為 HH:MM:SS

  • March 22, 2018

我看到類似的問題,但大多數都與日期時間或相當不同的要求有關。

我有一個 CSV 報告,其中的時間列儲存為 HH:MM

$$ :SS $$(如果超過 1 天,它會增加 :00 秒……很煩人,而且我無法控制報告本身的執行方式。)我認為,在派生列任務中,我們可以減少秒數。 例子:

  • 23:54 = 23H 54M
  • 27:35:00 = 27H 35M 00S

我的問題是:

  1. 如果 CSV 將列載入為文本,那麼派生列需要什麼表達式?
  2. 我應該如何設置 SQL 數據庫中的數據類型?

相關資訊:SQL Server 2014 和 SSDT for VS 2013

謝謝你,韋斯

  1. 時間/日期數據類型通常是儲存持續時間的有問題的選擇。而是使用整數或小數來表示合適的解析度(秒或毫秒很流行,但在這種情況下分鐘可能對您有用)。

  2. 在這種情況下,最簡單的選擇可能是:(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)

引用自:https://dba.stackexchange.com/questions/201910