0

TEXT FORMAT で HH:MM:SSとして出力を取得しているクエリを次に示します。操作、並べ替え、検索ができるように、出力を時間形式で表示したいと考えています。

数値として取得できますか?

EXTRACT (DAY FROM interval)*10 + EXTRACT (HOUR FROM interval) - 
        CASE
            WHEN EXTRACT(HOUR FROM CAST(date2 AS TIMESTAMP)) > EXTRACT(HOUR FROM CAST(date 1 AS TIMESTAMP)) 
                THEN 
                    14
                ELSE
                    0 
        END || ':' || EXTRACT (MINUTE FROM interval) || ':' ||
   EXTRACT (SECOND FROM interval) CB_END_TV_START
4

1 に答える 1

2

私はあなたがあなたの値に対して行っている操作に従いません(日* 10と時間はおそらく-14で)が、原則として、個別のコンポーネントを取得し:たら、それらを連結するのではなく、それぞれを一緒に追加できます1 を適切な値で割って 1 日の分数に変換します (hour値を 24 で割った値minute、24*60 で割った値など)。

間隔の値がランダムに選択された場合 (および調整なし):

with t42 as ( select numtodsinterval(147.147, 'HOUR') as interval from dual)
select interval,
    extract (day from interval)
    + (extract (hour from interval) / 24)
    + (extract (minute from interval) / (24*60))
    + (extract (second from interval) / (24*60*60)) as num
from t42;

INTERVAL           NUM
----------- ----------
6 3:8:49.2    6.131125 

NUM値は部分的な日を表します。次の方法で、それを間隔に戻すことができます。

select numtodsinterval(6.131125, 'DAY') from dual;

NUMTODSINTERVAL(6.131125,'DAY')
-------------------------------
6 3:8:49.2

または、次のような文字列として、既知の固定日付に追加します。

select to_char(date '1900-01-01' + 6.131125 - 1, 'D HH24:MI:SS') from dual;

TO_CHAR(DATE'1900-01-01'+6.131125-1,'DHH24:MI:SS')
--------------------------------------------------
6 03:08:49                                         
于 2013-07-03T12:25:31.160 に答える