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

Comparación de fechas de Oracle en la cláusula where

No del todo, el DATE el tipo de datos no tiene formato; se almacena internamente en tablas como 7-bytes (año son 2 bytes y mes, día, hora, minuto y segundo son 1 byte cada uno). La interfaz de usuario que está utilizando (es decir, SQL/PLUS, SQL Developer, Toad, etc.) manejará el formato de un DATE de su formato binario a un formato legible por humanos. En SQL/Plus (o SQL Developer) este formato se basa en NLS_DATE_FORMAT parámetro de sesión .

Si la DATE se ingresa usando solo el día, mes y año, entonces el componente de tiempo (probablemente) se establecerá en 00:00:00 (medianoche).

Suponiendo que el componente de tiempo para su columna DOJ siempre sea medianoche, entonces:

SELECT COUNT(*)
FROM   students
WHERE  doj = TO_DATE( your_param, 'dd/mm/yyyy' )

Si no siempre es medianoche, entonces:

SELECT COUNT(*)
FROM   students
WHERE  TRUNC( doj ) = TO_DATE( your_param, 'dd/mm/yyyy' )

o:

SELECT COUNT(*)
FROM   students
WHERE  doj >= TO_DATE( your_param, 'dd/mm/yyyy' )
AND    doj <  TO_DATE( your_param, 'dd/mm/yyyy' ) + INTERVAL '1' DAY