ねら~ITエンジニア雑記

やきうのお兄ちゃんが綴るOracle Databaseメインのブログ

INTERVAL DAY TO SECOND型を秒数に変換してみる。

さっきのは前フリで、こっちが本来やりたかったこと。
EXTRACTファンクションを使いまする。

例として、1日12時間31分55.129秒の INTERVAL DAY TO SECOND型を秒数に変換してみる。

SELECT
    EXTRACT(DAY    FROM to_dsinterval('+01 12:31:55.129')) AS DAY
  , EXTRACT(HOUR   FROM to_dsinterval('+01 12:31:55.129')) AS HOUR
  , EXTRACT(MINUTE FROM to_dsinterval('+01 12:31:55.129')) AS MINUTE
  , EXTRACT(SECOND FROM to_dsinterval('+01 12:31:55.129')) AS SECOND
  , EXTRACT(DAY    FROM to_dsinterval('+01 12:31:55.129')) * 86400
  + EXTRACT(HOUR   FROM to_dsinterval('+01 12:31:55.129')) *  3600
  + EXTRACT(MINUTE FROM to_dsinterval('+01 12:31:55.129')) *    60
  + EXTRACT(SECOND FROM to_dsinterval('+01 12:31:55.129')) AS TOTAL_SECOND
  FROM DUAL;

       DAY       HOUR     MINUTE     SECOND TOTAL_SECOND
---------- ---------- ---------- ---------- ------------
         1         12         31     55.129   131515.129

1日12時間31分55.129秒 は 秒数に変換すると 131515.129秒。。。合ってるっぽい!

Oracle® Database SQL言語リファレンス
11gリリース2 (11.2)
B56299-06
EXTRACT(日時)
http://docs.oracle.com/cd/E16338_01/server.112/b56299/functions059.htm#i1017161