web-dev-qa-db-ja.com

SSISはフラットファイルセルをHH:MM:SSに変換します

類似の質問がありますが、ほとんどは日時またはかなり異なる要件に関係しています。

時間列がHH:MM [:SS]として保存されているCSVレポートがあります(1日を超えると、秒単位で:00が追加されます...迷惑で、レポート自体の実行方法を制御できません。 )派生列タスクでは、秒を削除できると思います。

例:

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

私の質問は次のとおりです。

  1. CSVが列をテキストとしてロードする場合、派生列にはどのような式が必要ですか?
  2. SQLデータベースのようにデータ型を何に設定する必要がありますか?

関連情報:SQL Server2014およびSSDTfor VS 2013

ありがとう、ウェス

1
Wes

2)時刻/日付のデータ型は、期間を保存するための問題のある選択であることがよくあります。代わりに、適切な解像度に整数または小数を使用してください(秒またはミリ秒が一般的ですが、この場合は分で十分な場合があります)。

1)この場合、最も単純なオプションは(DT_I4)TOKEN(Column,":",1) * 60 + (DT_I4)TOKEN(Column,":",2)です。

その他の方法:

  • 時間と分で常に2文字ずつ使用する場合は、(DT_I4)SUBSTRING( [Column], 1, 2 ) * 60 + (DT_I4)SUBSTRING( [Column], 4, 2 )のようなものを使用できます。
  • 時間は1文字以上で、分は常に2文字の場合:(DT_I4)SUBSTRING(Column,1,FINDSTRING(Column,":",1) - 1) * 60 + (DT_I4)SUBSTRING(Column,FINDSTRING(Column,":",1) + 1,2)
2
SQLFox