Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Różnica dat w dacie w Oracle i Javie

Data może być taka sama, ale godzina może być inna. Daje to 139 dni przy obliczaniu w milisekundach. (java)

Proponuję nie używać milisów, ale wykorzystać dni do obliczenia.

Coś jak

public long daysBetween(Calendar startDate, Calendar endDate) {
   Calendar date = (Calendar) startDate.clone();
   long daysBetween = 0;
   while (date.before(endDate)) {
      date.add(Calendar.DAY_OF_MONTH, 1);
      daysBetween++;
   }}

lub

/**
     *
     * @param c1 from
     * @param c2 to
     * @return amount of days between from and to
     */
    public int diff(Calendar c1, Calendar c2) {
        int years = c2.get(Calendar.YEAR) - c1.get(Calendar.YEAR);
        if (years == 0) {
            return c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
        } else {
            Calendar endOfYear =  Calendar.getInstance();
            endOfYear.set(Calendar.YEAR, c1.get(Calendar.YEAR));
            endOfYear.set(Calendar.MONTH, 11);
            endOfYear.set(Calendar.DAY_OF_MONTH, 31);
            int days = endOfYear.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);
            for (int i=1;i <years;i++) {
                endOfYear.add(Calendar.YEAR, 1);
                days += endOfYear.get(Calendar.DAY_OF_YEAR);
            }
            days += c2.get(Calendar.DAY_OF_YEAR);
            return days;
        }
    }

Uwaga dodatkowa:Pierwszy przykład jest nieco wolniejszy niż drugi, ale jeśli dotyczy tylko małych różnic, można go pominąć.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Numer Oracle i varchar łączą się

  2. Jak zmienić nazwę węzła Oracle XMLTYPE?

  3. Projekt bazy danych planowania lekarza

  4. Połączenie krzyżowe w Oracle

  5. średnia sprzedaż kwartału z poprzednim kwartałem średnia sprzedaż