2

次のクエリを使用しています

(24 * extract(day from (sysdate - c.LOADING_TIME) day(9) to second))
       + extract(hour from (sysdate - c.LOADING_TIME) day(9) to second)
       + ((1/100) * extract(minute from (sysdate - c.LOADING_TIME) day(9) to second)) -
required_time/60

現在、6.76 のようなデータを取得しています。問題は、HH.MM で required_time を変換していないことです。これを行う方法?

ps required_time は分 (整数) を表すことに注意してください。5 時間 45 分を意味する 5.45 として出力する必要があります。

4

3 に答える 3

0

差を時間と分で表現したいとします。私は単純な算術でこれを行います:

select trunc((sysdate - c.LoadingTime)*24) as hours,
       trunc(mod((sysdate - c.LoadingTime)*24*60, 60)) as minutes
from . . .

これを文字列にフォーマットできます。

select to_char(trunc((sysdate - c.LoadingTime)*24), '00')||':'+
       to_char(trunc(mod((sysdate - c.LoadingTime)*24*60, 60)), '00')
于 2012-08-11T22:38:32.593 に答える
0

作業を行うには、正しいタイムスタンプが表示されるようEXTRACTにフィールドを変換する必要があります。また、月ではなく分を意味するのではないことTO_TIMESTAMP()について話していると思います。このようなもの-MIMMMM

SELECT EXTRACT(MINUTE FROM TO_TIMESTAMP('01-JAN-2005 19:15:26','DD-MON-YYYY HH24:MI:SS')) FROM dual;

日付フィールドでは、次のようになります-

SELECT EXTRACT(MINUTE FROM TO_TIMESTAMP(TO_CHAR(sysdate,'DD-MON-YYYY HH24:MI:SS'),'DD-MON-YYYY HH24:MI:SS')) FROM dual;

あなたのクエリでは、hour from (sysdate...)minute from (sysdate...)はおそらく を返して0います。しかし、dayそれはうまくいくでしょう。

于 2012-08-11T22:22:35.970 に答える
0

と があり、何かをロードする実際の時間 (SYSDATE - LOADING_TIME) と標準のロード時間 (REQUIRED_TIME) の差を特定しようとしていますLOADING_TIME DATEREQUIRED_TIME INTEGER

私がそれを正しく理解している場合は、次のことを試してください。

WITH e AS 
  (SELECT NUMTODSINTERVAL((SYSDATE - LOADING_TIME), 'DAY') -
          NUMTODSINTERVAL(REQUIRED_TIME, 'MINUTE') AS ELAPSED 
     FROM YOUR_TABLE_HERE) 
SELECT TRIM(CASE
              WHEN EXTRACT(HOUR FROM ELAPSED) < 0 THEN '-'
              WHEN EXTRACT(MINUTE FROM ELAPSED) < 0 THEN '-'
              ELSE ' '
            END ||
            TRIM(TO_CHAR(ABS(EXTRACT(HOUR FROM ELAPSED)), '09')) || '.' || 
            TRIM(TO_CHAR(ABS(EXTRACT(MINUTE FROM ELAPSED)), '09')))
  FROM e;

NUMTODSINTERVALREQUIRED_TIME などのスカラー値を INTERVAL に変換するための Oracle の関数です。これは、DATE などを含む計算で使用できます。ドキュメンテーションはこちら

うまくいけば、これで物事が少し簡単になります。

共有してお楽しみください。


編集: EXTRACT 呼び出しを修正しました。SYSDATE - LOADING_TIME の結果を間隔に変換する機能が追加されました。サインの取り扱いが含まれています。

于 2012-08-12T00:24:40.863 に答える