sql >> Base de Datos >  >> RDS >> Oracle

Oracle SQL comparando fechas

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' );