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

bandingkan tanggal dalam perintah sql

Tidak. Tanggal/Stempel Waktu tidak memiliki format . Oracle tidak menyimpan tanggal/stempel waktu dalam format yang Anda lihat. Format yang Anda lihat hanya untuk tampilan tujuan. Tanggal disimpan secara internal dalam 7 byte yang merupakan format milik Oracle .

Tentu saja Anda bisa. Anda dapat menggunakan TRUNC yang memotong bagian waktu dan hanya menyisakan bagian tanggal dan tipe data tetap sebagai tanggal.

Misalnya,

SQL> SELECT TRUNC(SYSTIMESTAMP) my_tmstmp FROM DUAL;

MY_TMSTMP
----------
2015-05-29

Jadi, Anda mendapatkan input pengguna dalam format itu sebagai string . Anda harus terlebih dahulu mengkonversi ke DATE menggunakan TO_DATE lalu bandingkan.

Misalnya,

WHERE TRUNC(dt_column) < TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')

Seperti yang sudah saya katakan, jika Anda ingin mengabaikan porsi waktu, maka terapkan TRUNC .

Namun, menerapkan TRUNC pada tanggal kolom akan menekan indeks regular reguler apa pun pada kolom itu. Dari sudut pandang kinerja, sebaiknya gunakan Kondisi rentang tanggal .

Misalnya,

WHERE dt_column
BETWEEN 
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS')
AND     
        TO_DATE('05/29/2015 12:07:58', 'MM/DD/YYYY HH24:MI:SS') +1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle PL/SQL:Membantu menyelesaikan PLS-00103:Menemukan simbol LOOP saat mengharapkan salah satu dari yang berikut:jika

  2. String panjang di N-Hibernate dengan Oracle menyebabkan kesalahan

  3. NULLIF() Fungsi di Oracle

  4. bagaimana cara mendeklarasikan %ROWTYPE dari variabel yang merupakan SYS_REFCURSOR yang diketik dengan lemah?

  5. Cara membatalkan pernyataan SQL di area Oracle SQL sehingga rencana baru dihasilkan saat mengumpulkan statistik