Förutsatt date_enter
är ett DATE
fält:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc()
funktion tar bort tidsdelen som standard, så trunc(sysdate)
ger dig midnatt i morse.
Om du särskilt vill hålla dig till between
, och du har en DATE
inte en TIMESTAMP
, du kan göra:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
är inkluderande, så om du inte tar ledigt en sekund kan du potentiellt plocka upp skivor från exakt midnatt ikväll; så detta genererar den 23:59:59 tiden du letade efter i din ursprungliga fråga. Men med >=
och <
är lite tydligare och mer explicit enligt mig i alla fall.
Om du är säker på att du ändå inte kan ha datum senare än idag, lägger den övre gränsen egentligen inte till någonting, och du skulle få samma resultat med bara:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Du vill inte använda trunc
eller to_char
på date_enter
kolumn dock; att använda någon funktion förhindrar att ett index på den kolumnen används, vilket är anledningen till att din fråga med to_char
var för långsam.