Za předpokladu date_enter je DATE pole:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc() funkce ve výchozím nastavení vyjme časovou část, takže trunc(sysdate) dává vám dnes ráno půlnoc.
Pokud konkrétně chcete zůstat u between a máte DATE ne TIMESTAMP , můžete udělat:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between je inkluzivní, takže pokud si neuděláte ani vteřinu volna, pak byste potenciálně vyzvedli záznamy přesně od dnešní půlnoci; takže to vygeneruje čas 23:59:59, který jste hledali ve svém původním dotazu. Ale pomocí >= a < je podle mého názoru o něco jasnější a explicitnější.
Pokud jste si jisti, že stejně nemůžete mít data později než dnes, horní mez ve skutečnosti nic nepřidává a stejného výsledku byste získali pouze:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Nechcete použít trunc nebo to_char na date_enter i když sloupec; použití jakékoli funkce zabrání použití indexu v tomto sloupci, což je důvod, proč váš dotaz s to_char byl příliš pomalý.