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

Bagaimana menemukan perbedaan nilai format TIMESTAMP b/w di Oracle?

Hasil aritmatika timestamp adalah tipe data INTERVAL. Anda memiliki INTERVAL HARI KE DETIK di sana...

Jika Anda ingin jumlah menit, salah satu caranya adalah dengan menggunakan EXTRACT() , misalnya:

select extract( minute from interval_difference ) * 60 
        + extract( hour from interval_difference ) * 60
        + extract( day from interval_difference ) * 60 * 24
  from ( select systimestamp - (systimestamp - 1) as interval_difference
           from dual )

Atau Anda dapat menggunakan trik dengan tanggal:

select sysdate + (interval_difference * 1440) - sysdate
  from (select systimestamp - (systimestamp - 1) as interval_difference
          from dual )

Versi "trik" berfungsi karena urutan prioritas operator dan perbedaan antara aritmatika tanggal dan cap waktu.

Awalnya operasi terlihat seperti ini:

date + ( interval * number ) - date

Seperti yang disebutkan dalam dokumentasi:

Oracle mengevaluasi ekspresi di dalam tanda kurung sebelum mengevaluasi yang di luar.

Jadi, operasi pertama dilakukan untuk mengalikan interval dengan 1.440. Interval, yaitu periode waktu diskrit, dikalikan dengan angka adalah periode waktu diskrit lainnya, lihat dokumentasi pada datetime dan aritmatika interval. Jadi, hasil dari operasi ini adalah sebuah interval, meninggalkan kita dengan:

date + interval - date

Operator plus lebih diutamakan daripada minus di sini. Alasan untuk ini mungkin karena interval dikurangi tanggal adalah operasi yang tidak valid, tetapi dokumentasi juga menyiratkan bahwa ini masalahnya (tidak keluar dan mengatakannya). Jadi, operasi pertama yang dilakukan adalah tanggal + interval. Tanggal ditambah interval adalah tanggal. Tinggalkan saja

date - date

Sesuai dokumentasi, ini menghasilkan bilangan bulat yang mewakili jumlah hari. Namun, Anda mengalikan interval asli dengan 1.440, jadi ini sekarang mewakili 1.440 kali jumlah hari yang seharusnya. Anda kemudian pergi dengan jumlah detik.

Perlu diperhatikan bahwa:

Ketika perhitungan interval mengembalikan nilai datetime, hasilnya harus berupa nilai datetime yang sebenarnya atau database mengembalikan kesalahan. Misalnya, dua pernyataan berikutnya mengembalikan kesalahan:

Metode "trik" akan gagal, jarang tapi masih akan gagal. Seperti biasa, sebaiknya lakukan dengan benar.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Menggabungkan kolom dengan grup di R

  2. Cara Menambahkan Indikator Meridiem (AM/PM) ke Nilai Waktu di Oracle

  3. Oracle SQL :stempel waktu di mana klausa

  4. Jejak SQL, 10046 acara di Oracle:trcsess, utilitas tkprof

  5. Nilai Data Seiring Waktu