Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

जावा में ORACLE फ़ंक्शन MONTHS_BETWEEN का एनालॉग

मैंने उसी आवश्यकता में भाग लिया है और @ alain.janinm उत्तर से शुरू किया है जो अच्छा है लेकिन कुछ मामलों में सटीक वही परिणाम नहीं देता है।
उदा :

17/02/2013 और 11/03/2016 के बीच के महीनों पर विचार करें ("dd/MM/yyyy" )
Oracle परिणाम:36,8064516129032
@Alain.janinm उत्तर से जावा विधि:36.74193548387097

Oracle के months_between() के निकट परिणाम प्राप्त करने के लिए मैंने जो परिवर्तन किए हैं, वे यहां दिए गए हैं समारोह :

public static double monthsBetween(Date startDate, Date endDate){  

    Calendar cal = Calendar.getInstance(); 

    cal.setTime(startDate);  
    int startDayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
    int startMonth =  cal.get(Calendar.MONTH);
    int startYear = cal.get(Calendar.YEAR);  

    cal.setTime(endDate);
    int endDayOfMonth = cal.get(Calendar.DAY_OF_MONTH);  
    int endMonth =  cal.get(Calendar.MONTH);
    int endYear = cal.get(Calendar.YEAR);  


    int diffMonths = endMonth - startMonth;
    int diffYears = endYear - startYear;
    int diffDays = endDayOfMonth - startDayOfMonth;

    return (diffYears * 12) + diffMonths + diffDays/31.0;
} 

इस फ़ंक्शन के साथ दिनांक 17/02/2013 और 11/03/2016 के लिए कॉल का परिणाम है:36.806451612903224

नोट:मेरी समझ से Oracle के months_between() फ़ंक्शन मानता है कि सभी महीने 31 दिन लंबे होते हैं



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक विशेष शर्त के साथ समूह कैसे करें

  2. यूनियन क्लॉज का उपयोग करके चुनें

  3. क्या मैं यहाँ Oracle विश्लेषणात्मक कार्य का उपयोग कर सकता हूँ?

  4. बहुत समय लेते हुए अचानक हटाएं

  5. mybatis में oracle फ़ंक्शन को कैसे कॉल करें