2016-10-31 1 views
0

現在、機器の稼働時間を持つデータがあり、そのテーブルのCHARACTER_VARYINGフィールドは次のようになります。Netezza - テキストと数値を含むさまざまなvarcharフィールドからの秒単位の抽出時間

それは、データがそれがテキストにあります引かれた時点での最高値は常にだけど、それは日数よりも高い数えることは決してないだろう上であなたが見ることができるように、それはすなわちヶ月 127 days, 16:05:32.00

11 hours, 02:33.00 3 days, 09:37:20.37 17 days, 16:05:32.00 58 minutes, 02.00

行きません

各行の合計時間を秒単位で抽出する必要があります。最初に "時間"などのテキストを探すためにCASE WHENの文を考えて、最初の数値を秒に変換し、残りの数値を秒に変換して一緒に加算します。

トータルソリューションを探しているわけではありませんが、何がうまくいくかについてアドバイスしてください。

編集:できるだけテーブルを変更せずにこれを行う必要があります。

答えて

0

これは痛みです。私の提案はcaseと日付/時刻ロジックです。私は、日付/時間のネティーザ固有の機能に精通していないですが、ロジックはこのようなものです:

select (case when val like '% hours%' 
      then cast(substr(val, instr(val, ' ')) as int) * 60 * 60 + 
        -- extract the seconds from substr(val, -8, 8) 
      . . . 

つまり、文字列のうち、最初の番号を取得し、秒を取得するために、適切な量を掛け。可能な形式の各文字列を区切るには、caseを使用します。

最後に「時間」コンポーネントを探し、それを秒に変換します。私はNetezzaでそれを行う方法を知らない。

関連する問題