No Oracle, um
DATE
sempre tem um componente de tempo. Seu cliente pode ou não exibir o componente de tempo, mas ele ainda está lá quando você tenta fazer uma comparação de igualdade. Você também sempre quer comparar datas com datas em vez de strings que usam o NLS_DATE_FORMAT
da sessão atual por fazer conversões implícitas, tornando-as bastante frágeis. Isso envolverá literais de data ANSI ou to_date
explícito chamadas Você pode usar o
TRUNC
função para truncar o DATE
à meia-noite SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
Ou você pode fazer uma comparação de intervalo (o que será mais eficiente se você puder se beneficiar de um índice em
odate
) SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );