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ý.