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

TIMESTAMPDIFF di Oracle 11g?

Fungsi itu tidak ada di Oracle RDMBS; itu jelas terjadi di Oracle Lite (yang belum pernah saya temui) dan saya yakin itu ada di database lain seperti MySQL.

Ada dokumentasi yang mencakup aritmatika waktu dan interval yang akan membuat Anda menjadi bagian dari perjalanan ke sana; Anda dapat mengurangi satu stempel waktu dari yang lain; atau satu tanggal dari tanggal lain, atau campuran keduanya - tetapi lebih mudah untuk tetap menggunakan satu tipe data. Tergantung yang Anda gunakan, Anda akan mendapatkan interval atau angka yang mewakili jumlah hari:

SQL> SELECT CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00' FROM DUAL;

CURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00'
---------------------------------------------------------------------------
+000006169 16:16:21.287166000

SQL> SELECT CURRENT_DATE - DATE '1998-12-09' FROM DUAL;

CURRENT_DATE-DATE'1998-12-09'
-----------------------------
                   6169.67775

Jika Anda hanya ingin jumlah hari penuh, Anda dapat menggunakan extract() untuk interval untuk mendapatkan hanya elemen yang Anda inginkan, atau trunc() untuk nomor untuk menghapus bagian pecahan:

SQL> SELECT EXTRACT(DAY FROM CURRENT_TIMESTAMP - TIMESTAMP '1998-12-09 00:00:00') FROM DUAL;

EXTRACT(DAYFROMCURRENT_TIMESTAMP-TIMESTAMP'1998-12-0900:00:00')
---------------------------------------------------------------
                                                           6169

SQL> SELECT TRUNC(CURRENT_DATE - DATE '1998-12-09') FROM DUAL;

TRUNC(CURRENT_DATE-DATE'1998-12-09')
------------------------------------
                                6169

Anda juga dapat trunc() tanggal saat ini sebelum perbandingan jika Anda mau, jadi Anda membandingkan keduanya pada tengah malam, yang berarti tidak akan ada bagian hari pecahan untuk dihapus:

SQL> SELECT TRUNC(CURRENT_DATE) - DATE '1998-12-09' FROM DUAL;

TRUNC(CURRENT_DATE)-DATE'1998-12-09'
------------------------------------
                                6169

Saya telah menggunakan literal tanggal ANSI untuk tanggal tetap, tetapi Anda dapat menggunakan variabel atau kolom tanggal atau stempel waktu yang ada; atau to_date() atau to_timestamp() jika Anda memiliki string dalam format yang berbeda.

Anda juga dapat menggunakan extract() untuk mengonversi komponen interval menjadi nilai gabungan, seperti yang ditunjukkan di sini ; dan juga pastikan Anda mengetahui perbedaan antara current_date dan sysdate , dan stempel waktu yang setara .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Panjang sebenarnya dari sebuah String, seperti yang terlihat oleh Oracle

  2. Fungsi agregasi Oracle untuk mengalokasikan jumlah

  3. Bagaimana Menghubungkan R ke Oracle?

  4. Cegah komit otomatis Koneksi Oracle untuk Sumber Data JNDI di JBoss 7 (Jeeves DBMS)

  5. oracle - pernyataan apa yang perlu dilakukan?