Asumiendo date_enter
es una DATE
campo:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
El trunc()
La función elimina la porción de tiempo de forma predeterminada, por lo que trunc(sysdate)
te da la medianoche de esta mañana.
Si quieres quedarte con between
, y tienes una DATE
no es un TIMESTAMP
, podrías hacer:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
es inclusivo, por lo que si no se toma un segundo de descanso, entonces podría obtener registros exactamente a partir de la medianoche de esta noche; entonces esto genera la hora 23:59:59 que estaba buscando en su consulta original. Pero usando >=
y <
es un poco más claro y más explícito, en mi opinión de todos modos.
Si está seguro de que no puede tener fechas posteriores a hoy de todos modos, el límite superior realmente no está agregando nada, y obtendría el mismo resultado con solo:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
No quieres usar trunc
o to_char
el date_enter
columna sin embargo; el uso de cualquier función evita que se use un índice en esa columna, razón por la cual su consulta con to_char
era demasiado lento.