Forudsat date_enter
er en DATE
felt:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc()
funktion fjerner tidsdelen som standard, så trunc(sysdate)
giver dig midnat i morges.
Hvis du især vil holde dig til between
, og du har en DATE
ikke en TIMESTAMP
, du kunne gøre:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
er inklusiv, så hvis du ikke tager et sekund fri, vil du potentielt hente plader fra præcis midnat i aften; så dette genererer den 23:59:59-tid, du ledte efter i din oprindelige forespørgsel. Men ved at bruge >=
og <
er lidt klarere og mere eksplicit, efter min mening i hvert fald.
Hvis du er sikker på, at du alligevel ikke kan have datoer senere end i dag, tilføjer den øvre grænse ikke rigtig noget, og du vil få det samme resultat med blot:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Du ønsker ikke at bruge trunc
eller to_char
på date_enter
kolonne dog; brug af en funktion forhindrer et indeks på den kolonne i at blive brugt, hvilket er grunden til din forespørgsel med to_char
var for langsom.