Ако приемем date_enter
е DATE
поле:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
trunc()
функцията премахва частта от времето по подразбиране, така че trunc(sysdate)
ви дава полунощ тази сутрин.
Ако особено искате да се придържате към between
и имате DATE
не е TIMESTAMP
, можете да направите:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
включва, така че ако не си вземете втора почивка, потенциално бихте взели записи точно от полунощ тази вечер; така че това генерира времето 23:59:59, което сте търсили в първоначалната си заявка. Но използвайки >=
и <
според мен е малко по-ясен и ясен.
Ако сте сигурни, че така или иначе не можете да имате дати по-късно от днес, горната граница всъщност не добавя нищо и ще получите същия резултат само с:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Не искате да използвате trunc
или to_char
на date_enter
колона все пак; използването на която и да е функция предотвратява използването на индекс в тази колона, поради което заявката ви с to_char
беше твърде бавен.