Angenommen date_enter
ist ein DATE
Feld:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
Der trunc()
Funktion entfernt standardmäßig den Zeitteil, also trunc(sysdate)
gibt dir heute morgen Mitternacht.
Wenn Sie besonders bei between
bleiben möchten , und Sie haben ein DATE
kein TIMESTAMP
, könnten Sie Folgendes tun:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
ist inklusive, also wenn Sie sich keine Sekunde frei nehmen, würden Sie möglicherweise heute Nacht genau um Mitternacht Platten abholen; Dadurch wird die Zeit 23:59:59 generiert, nach der Sie in Ihrer ursprünglichen Abfrage gesucht haben. Aber mit >=
und <
ist ein bisschen klarer und expliziter, meiner Meinung nach jedenfalls.
Wenn Sie sicher sind, dass Sie ohnehin keine Daten später als heute haben können, fügt die Obergrenze nicht wirklich etwas hinzu, und Sie würden dasselbe Ergebnis mit nur:
erhaltenSelect * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Sie möchten trunc
nicht verwenden oder to_char
am date_enter
Spalte aber; Die Verwendung einer beliebigen Funktion verhindert, dass ein Index für diese Spalte verwendet wird, weshalb Ihre Abfrage mit to_char
war zu langsam.