Ervan uitgaande dat date_enter
is een DATE
veld:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
De trunc()
functie verwijdert standaard het tijdgedeelte, dus trunc(sysdate)
geeft je vanmorgen middernacht.
Als u zich vooral wilt houden aan between
, en je hebt een DATE
geen TIMESTAMP
, je zou kunnen doen:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
is inclusief, dus als je geen seconde vrij neemt, kun je mogelijk platen ophalen vanaf precies middernacht vanavond; dus dit genereert de 23:59:59 tijd die u zocht in uw oorspronkelijke zoekopdracht. Maar met >=
en <
is naar mijn mening in ieder geval een beetje duidelijker en explicieter.
Als je zeker weet dat je toch geen datums later dan vandaag kunt hebben, voegt de bovengrens niet echt iets toe, en je zou hetzelfde resultaat krijgen met alleen:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Je wilt trunc
niet gebruiken of to_char
op de date_enter
kolom echter; het gebruik van een functie voorkomt dat een index op die kolom wordt gebruikt, daarom uw zoekopdracht met to_char
was te traag.