2011-09-08 13 views
1

私は1日の秒単位の整数フィールド(店舗オープン時間)を読んで、誰かが実際に読むことができるものに変換します。DB2の読み取り可能時間の秒数

例:すべてのストアは時間に正確に開きますが、半分の時間で開閉今一部の店舗場合 32400秒=午前9時(3600分の32400 = 9)

これは問題ありません。

例 9:30は9(34200/3600 = 9)に戻ってしまいますが、これは良くありません。私は34200も9.5と戻って欲しくない。

理想的には、32400が900と34200に戻って930に戻り、46800が1300に戻ることが理想です。入力と出力の両方のパラメータは整数でなければなりません(私は列の型を変更できません)。

これをDB2で簡単に行う方法はありますか?おかげ

答えて

4

これは、(あなたは、Linux、UNIXまたはWindows上のDB2を使用している提供)非常に簡単です:

VALUES INT(TIME('00:00:00') + 34200 seconds)/100 

これは46800の入力のために必要な34200の入力のための整数930、および1300を返します。

+0

「秒」のためにまっすぐ進むための+1。私はそれを忘れる馬鹿のように感じる(私が何を考えているかを考慮して)。 –

+0

私はちょうどあなたの答えにこれをコメントにしようとしていたが、OPはTIMEではなくINTとして結果を望んでいた。 –

+0

は魅力的に機能します。ありがとう! – user935618

1

は、私はあなたの現在のデータはを示していることを仮定している、と最初に記載されていないミリ秒として...

以下は、あなたのDB2で有効なtimeデータ型を取得します:

SELECT CAST('00:00:00' as TIME) + (34200/3600) HOURS + MOD(34200/60, 60) MINUTES 
FROM sysibm/sysdummy1 

これにより、よりわかりやすい形式への翻訳が表示コードで簡単に処理されます。

関連する問題