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.