En supposant date_enter
est une DATE
champ :
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
Le trunc()
la fonction supprime la partie heure par défaut, donc trunc(sysdate)
vous donne minuit ce matin.
Si vous voulez particulièrement vous en tenir à between
, et vous avez une DATE
pas un TIMESTAMP
, vous pourriez faire :
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
est inclusif, donc si vous ne prenez pas une seconde de repos, vous récupérerez potentiellement des enregistrements à partir de minuit exactement ce soir ; cela génère donc l'heure 23:59:59 que vous recherchiez dans votre requête d'origine. Mais en utilisant >=
et <
est un peu plus clair et plus explicite, à mon avis en tout cas.
Si vous êtes sûr que vous ne pouvez pas avoir de dates ultérieures à aujourd'hui de toute façon, la limite supérieure n'ajoute rien et vous obtiendrez le même résultat avec juste :
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Vous ne voulez pas utiliser trunc
ou to_char
le date_enter
colonne cependant; l'utilisation de n'importe quelle fonction empêche l'utilisation d'un index sur cette colonne, c'est pourquoi votre requête avec to_char
était trop lent.