Assumendo date_enter
è una DATE
campo:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
Il trunc()
la funzione elimina la parte temporale per impostazione predefinita, quindi trunc(sysdate)
ti dà mezzanotte questa mattina.
Se in particolare vuoi restare con between
e hai una DATE
non un TIMESTAMP
, potresti fare:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
è compreso, quindi se non ti prendi un secondo di pausa, potresti potenzialmente raccogliere i record da mezzanotte esatta di stasera; quindi questo genera l'ora 23:59:59 che stavi cercando nella tua query originale. Ma usando >=
e <
è un po' più chiaro ed esplicito, secondo me comunque.
Se sei sicuro di non poter comunque avere date successive a oggi, il limite superiore non aggiunge nulla e otterresti lo stesso risultato con solo:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Non vuoi usare trunc
o to_char
su date_enter
colonna però; l'utilizzo di qualsiasi funzione impedisce l'utilizzo di un indice su quella colonna, motivo per cui la tua query con to_char
era troppo lento.