मैं 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;
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 यहां
आपको जो परिणाम मिल रहा है वह नहीं "hours.minutes" है - यह घंटों का दशमलव प्रतिनिधित्व है। ०.३४ घंटा २० मिनट और २४ सेकंड है, जो कि आप जिस परिणाम के लिए गनिंग कर रहे हैं, वह दो दशमलव स्थानों की राउंडिंग त्रुटि तक है, जो आप मजबूर कर रहे हैं।
संबंधित सवाल
नए सवाल
oracle
ओरेकल डेटाबेस ओरेकल कॉर्पोरेशन द्वारा बनाया गया एक मल्टी-मॉडल डेटाबेस मैनेजमेंट सिस्टम है। Oracle, जैसे जावा और MySQL के स्वामित्व वाले अन्य उत्पादों के लिए इस टैग का उपयोग न करें।