Assumindo
date_enter
é uma DATE
campo:Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate)
And CuRo.Date_Enter < trunc(sysdate) + 1;
O
trunc()
A função remove a parte do tempo por padrão, então trunc(sysdate)
dá-lhe meia-noite esta manhã. Se você deseja ficar com
between
, e você tem um DATE
não é um TIMESTAMP
, você poderia fazer:Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter between trunc(sysdate)
And trunc(sysdate) + interval '1' day - interval '1' second;
between
é inclusivo, portanto, se você não tirar um segundo de folga, potencialmente pegará registros exatamente da meia-noite desta noite; então isso gera a hora 23:59:59 que você estava procurando em sua consulta original. Mas usando >=
e <
é um pouco mais claro e explícito, na minha opinião. Se você tem certeza de que não pode ter datas depois de hoje, o limite superior não está realmente adicionando nada e você obteria o mesmo resultado com apenas:
Select * From Customer_Rooms CuRo
Where CuRo.Date_Enter >= trunc(sysdate);
Você não quer usar
trunc
ou to_char
no date_enter
coluna embora; usar qualquer função impede que um índice nessa coluna seja usado, e é por isso que sua consulta com to_char
foi muito lento.