मैं DATE_OUT (17-NOV-20 03:23 PM) से DATE_IN (16-NOV-20 06:02 PM) घटा रहा हूं। मुझे उम्मीद है कि उत्तर 21.21 (घंटे.मिनट) होगा, लेकिन यह मुझे 21.34 देता है जो सही घंटे हैं लेकिन सही मिनट नहीं हैं। मैं क्या गलत कर रहा हूं?

function TIME_CALCULATIONFormula return NUMBER is
begin
    RETURN ROUND((((:DATE_OUT - :DATE_IN)*24)*60)/60,2);
end;
1
aws 2 जिंदा 2021, 02:17

2 जवाब

सबसे बढ़िया उत्तर

मान 0.34 घंटे = 20.4 मिनट के रूप में सही है।

यदि आप घंटों को इकाइयों के रूप में और मिनटों को दशमलव के रूप में वापस करना चाहते हैं तो आप इसका उपयोग कर सकते हैं:

function TIME_CALCULATIONFormula return NUMBER
is
  diff INTERVAL DAY TO SECOND := (:DATE_OUT - :DATE_IN) DAY TO SECOND;
begin
  RETURN EXTRACT( DAY FROM diff ) * 24
         + EXTRACT( HOUR FROM diff )
         + EXTRACT( MINUTE FROM diff ) / 100;
end;

या

function TIME_CALCULATIONFormula return NUMBER
is
  diff INTERVAL DAY TO SECOND := CAST(:DATE_OUT AS TIMESTAMP)
                                 - CAST(:DATE_IN AS TIMESTAMP);
begin
  RETURN EXTRACT( DAY FROM diff ) * 24
         + EXTRACT( HOUR FROM diff )
         + EXTRACT( MINUTE FROM diff ) / 100;
end;

या

function TIME_CALCULATIONFormula return NUMBER
is
begin
  RETURN TRUNC( ( :date_out - :date_in ) * 24 ) +
         MOD( ( :date_out - :date_in ) * 24 * 60, 60 ) / 100;
end;

या, यदि आपके पास 24 घंटों में समय अंतर नहीं होने वाला है और आप संख्याओं पर अनुगामी शून्य चाहते हैं:

function TIME_CALCULATIONFormula return VARCHAR2
is
begin
  RETURN TO_CHAR( DATE '1900-01-01' + ( :date_out - :date_in ), 'HH24.MI' );
end;

db<>fiddle यहां

3
MT0 2 जिंदा 2021, 03:32

आपको जो परिणाम मिल रहा है वह नहीं "hours.minutes" है - यह घंटों का दशमलव प्रतिनिधित्व है। ०.३४ घंटा २० मिनट और २४ सेकंड है, जो कि आप जिस परिणाम के लिए गनिंग कर रहे हैं, वह दो दशमलव स्थानों की राउंडिंग त्रुटि तक है, जो आप मजबूर कर रहे हैं।

1
Mureinik 2 जिंदा 2021, 02:22