En Oracle, una DATE
siempre tiene un componente de tiempo. Su cliente puede mostrar o no el componente de tiempo, pero todavía está allí cuando intenta hacer una comparación de igualdad. También desea comparar siempre fechas con fechas en lugar de cadenas que utilizan el NLS_DATE_FORMAT
de la sesión actual. por hacer conversiones implícitas haciéndolas bastante frágiles. ESO implicará literales de fecha ANSI o to_date
explícito llamadas
Puedes usar el TRUNC
función para truncar el DATE
a medianoche
SELECT *
FROM porder
WHERE trunc(odate) = date '2013-10-04'
O puede hacer una comparación de rango (que será más eficiente si puede beneficiarse de un índice en odate
)
SELECT *
FROM porder
WHERE odate >= to_date( '04-Oct-2013', 'DD-Mon-YYYY' )
AND odate < to_date( '05-Oct-2013', 'DD-Mon-YYYY' );