Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Perbedaan tanggal dalam tanggal di Oracle dan Java

Tanggalnya bisa sama tapi waktunya bisa berbeda. Menghasilkan 139 hari ketika Anda menghitung melalui milidetik. (jawa)

Saya sarankan untuk tidak menggunakan mili, tetapi gunakan hari untuk menghitung.

Sesuatu seperti

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++;
   }}

atau

/**
     *
     * @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;
        }
    }

Catatan tambahan:Contoh pertama sedikit lebih lambat dari yang kedua, tetapi jika hanya untuk perbedaan kecil, itu dapat diabaikan.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01756:string yang dikutip tidak dihentikan dengan benar ketika saya mencoba mengeksekusi kode saya

  2. Fungsi agregat selama interval waktu tertentu

  3. Oracle systimestamp (sysdate) ke milidetik

  4. SQL Challenge/Puzzle:Bagaimana cara menggabungkan rentang bersarang?

  5. Mengapa Oracle mengembalikan urutan tertentu jika nilai 'orderby' identik?