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

Oracle Pilih Dimana Tanggal Antara Hari Ini

Dengan asumsi date_enter adalah DATE bidang:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate)
   And CuRo.Date_Enter < trunc(sysdate) + 1;

trunc() fungsi menghapus bagian waktu secara default, jadi trunc(sysdate) memberi Anda tengah malam pagi ini.

Jika Anda ingin tetap menggunakan between , dan Anda memiliki DATE bukan TIMESTAMP , Anda dapat melakukan:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter between trunc(sysdate)
      And trunc(sysdate) + interval '1' day - interval '1' second;

between inklusif, jadi jika Anda tidak mengambil waktu sedetik pun maka Anda berpotensi mengambil rekaman tepat tengah malam malam ini; jadi ini menghasilkan waktu 23:59:59 yang Anda cari dalam kueri asli Anda. Tetapi menggunakan >= dan < sedikit lebih jelas dan lebih eksplisit, menurut saya.

Jika Anda yakin tidak dapat memiliki tanggal lebih dari hari ini, batas atas tidak benar-benar menambahkan apa pun, dan Anda akan mendapatkan hasil yang sama hanya dengan:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate);

Anda tidak ingin menggunakan trunc atau to_char pada date_enter kolom meskipun; menggunakan fungsi apa pun mencegah indeks pada kolom itu digunakan, itulah sebabnya kueri Anda dengan to_char terlalu lambat.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. NHibernate - tidak dapat menemukan dialek (Oracle) dalam konfigurasi

  2. Apa tipe data Oracle MLSLABEL?

  3. Menghubungkan Oracle ke PostgreSQL

  4. Mengonversi angka/angka dalam kata-kata untuk mata uang INR (Rupee India) di Oracle PL/SQL

  5. Bagaimana cara menangani beberapa TimeZones dalam aplikasi yang menyimpan tanggal dan waktu?