Zakładając, że date_enter to DATE pole:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc() funkcja domyślnie usuwa część czasu, więc trunc(sysdate) daje ci północ dziś rano.
Jeśli szczególnie chcesz trzymać się between i masz DATE nie TIMESTAMP , możesz zrobić:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between jest inkluzywny, więc jeśli nie weźmiesz sekundy, potencjalnie odbierzesz nagrania dokładnie od północy; więc generuje to godzinę 23:59:59, której szukałeś w pierwotnym zapytaniu. Ale używając >= i < moim zdaniem jest nieco jaśniejszy i bardziej wyraźny.
Jeśli masz pewność, że i tak nie możesz mieć dat późniejszych niż dzisiaj, górna granica tak naprawdę niczego nie dodaje, a ten sam wynik uzyskasz po prostu:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Nie chcesz używać trunc lub to_char w dniu date_enter kolumna chociaż; użycie dowolnej funkcji uniemożliwia użycie indeksu w tej kolumnie, dlatego zapytanie z to_char był zbyt wolny.